classSolution {
public:int maximizeWin(vector<int>& nums, int k) {
int n = nums.size(), left =0, right =0, res =0;
unordered_map<int,int> dp;
int missed =0;
while (right < n) {
while (right +1< n && nums[right] == nums[right+1]) right++;
if (nums[right] - nums[left] > k) {
while (nums[right] - nums[left] > k) {
missed = max(missed, dp[nums[left++]]);
}
}
dp[nums[right]] = right - left +1;
right++;
res = max(res, right - left + missed);
}
return res;
}
};