๋ฌธ์
ํ์ด ๊ณผ์
์ต๋ 2์ข
๋ฅ์ ๊ณผ์ผ์ ๋ด์ ์ ์๋ ๋ฐ๊ตฌ๋๋ฅผ ์ด์ฉํด์ ๊ฐ๋ฅํ ๋ง์ ๊ณผ์ผ์ ๋ด์ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋ ํฌ ํฌ์ธํฐ
๋ฌธ์ ์
๋๋ค. head
์ tail
์ ์ด์ฉํด์ ๊ณผ์ผ์ ํ๋์ฉ ์ํํ๋๋ฐ, 2์ข
๋ฅ์ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ ๊ณผ์ผ์ด๋ฉด tail
์ ์ฆ๊ฐ์ํค๊ณ
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ง์กฑํ ๋๊น์ง head
๋ฅผ ์ฆ๊ฐ์ํค๋ ๋ฐฉ๋ฒ์ ์ด์ฉํด์ ๊ตฌํํฉ๋๋ค.
์ฝ๋
/**
* @param {number[]} tree
* @return {number}
*/
var totalFruit = function (tree) {
let head = 0;
let tail = 0;
let answer = 1;
const basket = new Map();
basket.set(tree[head], 1);
while (head <= tail) {
tail += 1;
if (tail >= tree.length) {
break;
}
const fruit = tree[tail];
basket.set(fruit, basket.get(fruit) + 1 || 1);
// if overload
while (basket.size > 2) {
const fruit = tree[head];
basket.set(fruit, basket.get(fruit) - 1);
if (basket.get(fruit) === 0) {
basket.delete(fruit);
}
head += 1;
}
answer = Math.max(answer, tail - head + 1);
}
return answer;
};
๋ฐ์ํ
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 344 - Reverse String (Easy) (0) | 2021.04.05 |
---|---|
LeetCode 1578 - Minimum Deletion Cost to Avoid Repeating Letters (Medium) (0) | 2021.03.08 |
LeetCode 112 - Path Sum (Easy) (0) | 2021.03.04 |
LeetCode 63 - Unique Paths II (Medium) (0) | 2021.03.04 |
LeetCode 1011 - Capacity To Ship Packages Within D Days (Medium) (0) | 2021.03.04 |
๐ฌ ๋๊ธ