leetcode

Solution 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)); 4 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 } 14 15 public: 16 int subarraysWithKDistinct(const vector<int> &nums, int k) { 17 return atMost(nums, k) - atMost(nums, k - 1); 18 } 19 };