Problem : https://leetcode.com/problems/fruit-into-baskets/
Use sliding window approach to find the maximum contiguous section contains 2 unique numbers.
Time complexity = O ( N ), N = len(fruits).
Because for each number, it will either be added to the window or removed from the window once.
class Solution {
public int totalFruit(int[] fruits) {
int[] counter = new int[fruits.length];
int uniqNum = 0;
int result = 0;
int left = 0;
for (int right = 0; right < fruits.length; right++) {
counter[fruits[right]] += 1;
if (counter[fruits[right]] == 1) {
uniqNum += 1;
}
while (left <= right && uniqNum > 2) {
counter[fruits[left]] -= 1;
if (counter[fruits[left]] == 0) {
uniqNum -= 1;
}
left += 1;
}
result = Math.max(result, right - left + 1);
}
return result;
}
}
No comments:
Post a Comment