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)的时间复杂度。如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~

京公网安备 11010502036488号