int findPairs(vector<int>& nums, int k) {
if (k < 0) return 0;
unordered_map<int, int> cnt;
for (int num : nums) cnt[num]++;
int ans = 0;
for (auto &e : cnt) {
if (k == 0) ans += e.second >= 2;
else ans += cnt.count(e.first + k);
}
return ans;
}
int longestConsecutive(vector<int>& nums) {
// 把数都塞到集合中,然后取出无x-1的数x
// 看后序的x+1,x+2,...是否也在集合中
unordered_set<int> st;
for (int num : nums)
st.insert(num);
int ans = 0;
for (int num : nums) {
if (st.count(num - 1)) continue;
int len = 1;
while (st.count(num + len))
len++;
ans = max(ans, len);
}
return ans;
}
int removeDuplicates(vector<int>& nums) {
const int N = nums.size(), k = 2;
if (N <= k) return N;
int out = k;
for (int in = k; in < N; in++) {
if (nums[in] != nums[out-k]) {
nums[out++] = nums[in];
}
}
return out;
}