From 0d4282c9f09df6cef892368f34e8e83464bf6817 Mon Sep 17 00:00:00 2001 From: BangDori Date: Thu, 5 Jun 2025 08:38:57 +0900 Subject: [PATCH] =?UTF-8?q?[=EA=B0=95=EB=B3=91=EC=A4=80]=20Longest=20Incre?= =?UTF-8?q?asing=20Subsequence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bangdori/300.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 bangdori/300.js diff --git a/bangdori/300.js b/bangdori/300.js new file mode 100644 index 0000000..d5b31ea --- /dev/null +++ b/bangdori/300.js @@ -0,0 +1,34 @@ +/** + * @param {number[]} nums + * @return {number} + */ +var lengthOfLIS = function (nums) { + const answer = [nums[0]]; + + for (let i = 1; i < nums.length; i++) { + if (answer[answer.length - 1] < nums[i]) { + answer.push(nums[i]); + continue; + } + + const pos = upperbound(answer, nums[i]); + answer[pos] = nums[i]; + } + + return answer.length; +}; + +function upperbound(nums, target) { + let left = 0, + right = nums.length - 1; + + while (left < right) { + const mid = Math.floor((left + right) / 2); + + if (nums[mid] === target) return mid; + if (nums[mid] > target) right = mid; + else left = mid + 1; + } + + return right; +}