Skip to content

Instantly share code, notes, and snippets.

@dgodfrey206
Last active August 16, 2019 15:59
Show Gist options
  • Save dgodfrey206/b86d8c48bbe6a70cbadbb83c640401f0 to your computer and use it in GitHub Desktop.
Save dgodfrey206/b86d8c48bbe6a70cbadbb83c640401f0 to your computer and use it in GitHub Desktop.
#include <iostream>
#include <initializer_list>
#include<bits/stdc++.h>
using namespace std;
vector<int> longestDistinctKSubarray(vector<int> nums, int k) {
vector<int> ret;
if (k == 0)
return ret;
unordered_map<int, int> table;
int lAns = 0, rAns = 0;
for (int i=0, uniqueCount=0, left=0; i<nums.size(); i++) {
table[nums[i]]++;
if (table[nums[left]] == 1) {
uniqueCount++;
}
while (uniqueCount > k) {
if (--table[nums[left++]] == 0) {
uniqueCount--;
}
}
if (i - left > rAns - lAns) {
lAns = left;
rAns = i;
}
}
return {nums.begin() + lAns, nums.begin() + rAns};
}
int main() {
for (int x: longestDistinctKSubarray({1,1,1,2,3},2)) cout << x << " ";
}
// 1 2 3
// 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment