๋ฌธ์
ํ์ด ๊ณผ์
๊ฐ์ฅ ๊ธด ๋ถ๋ถ์์ด์ ๊ตฌํ๋ LIS
๋ฌธ์ ์
๋๋ค.๋์ ๊ณํ๋ฒ
์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์๋ ์์ง๋ง ์ด๋ถ ํ์
์ ์ด์ฉํ๋ฉด Nlog(N)
์ ์๊ฐ ๋ณต์ก๋๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ฝ๋
/**
* @param {number[]} nums
* @return {number}
*/
var lengthOfLIS = function (nums) {
const memo = [];
for (const num of nums) {
if (memo.length === 0) {
memo.push(num);
continue;
}
if (memo.length > 0 && memo[memo.length - 1] < num) {
memo.push(num);
} else {
const idx = binarySearch(memo, num);
memo[idx] = num;
}
}
return memo.length;
};
function binarySearch(arr, target) {
let lo = 0,
hi = arr.length - 1;
let idx = 2e9;
while (lo <= hi) {
const mid = Math.floor((lo + hi) / 2);
if (arr[mid] < target) {
lo = mid + 1;
} else {
idx = Math.min(idx, mid);
hi = mid - 1;
}
}
return idx;
}
๋ฐ์ํ
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 733 - Flood Fill (Easy) (0) | 2022.03.07 |
---|---|
LeetCode 229 - Majority Element II (Medium) (0) | 2022.02.22 |
LeetCode 36 - Valid Sudoku (Medium) (0) | 2021.04.13 |
LeetCode 120 - Triangle (Medium) (0) | 2021.04.13 |
LeetCode 38 - Count and Say (Medium) (0) | 2021.04.13 |
๐ฌ ๋๊ธ