From d39160a2addf9e70bfc0e265812274f200cd09d0 Mon Sep 17 00:00:00 2001 From: ceunnseo Date: Thu, 28 Aug 2025 10:28:45 +0900 Subject: [PATCH] Day04 --- .../Q915.js" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "leetcode2/2medium/\354\265\234\354\235\200\354\204\234/Q915.js" diff --git "a/leetcode2/2medium/\354\265\234\354\235\200\354\204\234/Q915.js" "b/leetcode2/2medium/\354\265\234\354\235\200\354\204\234/Q915.js" new file mode 100644 index 00000000..a6a963fe --- /dev/null +++ "b/leetcode2/2medium/\354\265\234\354\235\200\354\204\234/Q915.js" @@ -0,0 +1,24 @@ +/** + * @param {number[]} nums + * @return {number} + */ +//left의 모든 원소는 right의 모든 원소보다 작거나 같아야 한다 +var partitionDisjoint = function (nums) { + const n = nums.length; + const rightMin = Array(n).fill(0); + rightMin[n - 1] = nums[n - 1]; + for (let i = n - 2; i >= 0; i--) { + rightMin[i] = Math.min(rightMin[i + 1], nums[i]); + } + let leftMax = nums[0]; + let idx = 0; + for (idx; idx < n - 1; idx++) { + leftMax = Math.max(leftMax, nums[idx]); + //left의 모든 요소가 right보다 작아야 함 + //left에서 가장 큰 값 <= right에서 가장 작은 값 + if (leftMax <= rightMin[idx + 1]) { + break; + } + } + return idx + 1; +};