Skip to content
Rain Hu's Workspace
Go back

[LeetCode] 2555. Maximize Win From Two Segments

Rain Hu
class Solution {
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;
    }
};

Share this post on:

Previous
[LeetCode] 2106. Maximum Fruits Harvested After at Most K Steps
Next
[LeetCode] 2271. Maximum White Tiles Covered by a Carpet