Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit LeetCode solution in C++

1
class Solution {
2
public:
3
int longestSubarray(vector<int> &nums, int limit) {
4
int max_ans = 0;
5
map<int, int> mp;
6
int j = 0;
7
for (int i = 0; i < nums.size(); i++) {
8
mp[nums[i]]++;
9

10
while (mp.size() > 0 && abs(mp.rbegin()->first - mp.begin()->first) > limit) {
11
if (mp[nums[j]] > 0) {
12
mp[nums[j]]--;
13
}
14

15
if (mp[nums[j]] == 0) {
16
mp.erase(nums[j]);
17
}
18

19
j++;
20
}
21

22
max_ans = max(max_ans, i - j + 1);
23
}
24

25
return max_ans;
26
}
27
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0