题解 | #牛牛的独特子数组#

牛牛的独特子数组

https://www.nowcoder.com/practice/d0622bdd537f48ef92af67c4a209d26c?tpId=363&tqId=10622356&ru=/exam/oj&qru=/ta/super-company23Year/question-ranking&sourceUrl=%2Fexam%2Foj

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param k int整型
     * @return int整型
     */
    public int minSumOfUniqueSubarrays (int[] nums, int k) {
        int [] calNumber = new int[100001];
        for (int i = 0; i < nums.length; i++) {
            calNumber[nums[i]]++;
        }
        int sum = 0;
        for (int i = 0; i < calNumber.length; i++) {
            if (calNumber[i] > 0 && k > 0) {
                sum += i;
                k--;
            }
        }
        return k == 0 ? sum : 0;
    }
}

本题知识点分析:

1.计数排序

2.数组遍历

3.数学模拟

本题解题思路分析:

1.因为题目要求的数值范围在1到10W之间,这个级别常量级

2.可以直接用计数排序去统计出现的数值和次数

3.然后如果当前次数大于0并且k>0那么加上该数字i,k--

4.因为有可能出现{4,4,4} k = 3这样的情况,不能用重复值, 而k=3,代入代码,k = 2 ,只做一次减法,

5.return 的时候判断k是否等于0即可,如果等于0,说明找到符合要求的,如果k不等于0,说明找不到,返回0即可

本题使用编程语言: Java

我看很多人用滑动窗口做,都是可以的,都是O(n)的时间复杂度。如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务