291场周赛第三题
乌鱼子 用例没过完
应该把错了的用例放进去运行
好可惜 日常掉分 很烦呜呜呜呜
学习一下题解 利用hashset
class Solution {
public int countDistinct(int[] nums, int k, int p) {
Set> set = new HashSet<>();
for(int i = 0; i < nums.length ; i ++){
int count = 0;
List list = new ArrayList<>();
for(int j = i; j < nums.length ; j ++){
if(nums[j] % p == 0) count ++;
if(count > k) break;
list.add(nums[j]);
List list2 = new ArrayList<>(list);
set.add(list2);
}
}
return set.size();
}
}
周赛自己写的
class Solution {
public int countDistinct(int[] a, int k, int p) {
int n = a.length;
int res = 0;
boolean[] f = new boolean[n];
for (int i = 0; i < n ; i++) {
if (a[i] % p == 0) f[i] = true;
}
int i = 0, j = 0;
int num = 0;
if (f[j] == true) num ++;
Set con = new HashSet();
while(i < n && j < n) {
while(j + 1 < n) {
if (num < k) {
j ++;
if (f[j] == true) num ++;
} else {
if (f[j + 1] == false) j ++;
else break;
}
}
String s = "";
for (int m = i; m <= j; m++) {
s += a[m];
s += '*';
if (!con.contains(s)) {
res ++;
con.add(s);
}
}
if (f[i] == true) num --;
i ++;
}
return res;
}
} 


