leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0922.cpp (538B)
0 class Solution {
1 int atMost(const vector<int> &nums, int k) {
2 static int seen[20001] = {0};
3 memset(seen, 0x00, sizeof(seen));
5 int res = 0, j = 0;
6 for (int i = 0; i < nums.size(); i++) {
7 if (!seen[nums[i]]++) k--;
8 while (k < 0)
9 if (!--seen[nums[j++]]) k++;
10 res += i - j + 1;
11 }
12 return res;
13 }
15 public:
16 int subarraysWithKDistinct(const vector<int> &nums, int k) {
17 return atMost(nums, k) - atMost(nums, k - 1);
18 }
19 };