/*
* [904] 水果成篮
* 找至多包含两种元素的最长子串,返回其长度
*/
// @lc code=start
/**
* @param {number[]} fruits
* @return {number}
*/
var totalFruit = function (fruits) {
let left = 0;
let ans = 0;
const map = new Map()
for (let right = 0; right < fruits.length; right++) {
// 放
map.set(fruits[right], (map.get(fruits[right]) || 0) + 1);
while (check()) {
// 取
const leftKey = fruits[left]
const leftVal = map.get(leftKey)
if (leftVal > 1) {
map.set(leftKey, leftVal - 1)
} else {
map.delete(leftKey)
}
left++
}
ans = Math.max(ans, right - left + 1)
}
return ans;
function check() {
return map.size > 2
}
};
console.log(totalFruit([1, 2, 3, 2, 2]))
console.log(totalFruit([3, 3, 3, 1, 2, 1, 1, 2, 3, 3, 4]))