From 8ff7c43b10f6b1e7aa66bfdba65a06f4fb992d42 Mon Sep 17 00:00:00 2001 From: rain84 Date: 2024年10月10日 15:51:16 +0300 Subject: [PATCH 1/2] feat: add solutions to lc problem: No.0962 --- .../0962.Maximum Width Ramp/README.md | 90 ++++++++++++++++++ .../0962.Maximum Width Ramp/README_EN.md | 92 ++++++++++++++++++- .../0962.Maximum Width Ramp/Solution.js | 19 ++++ .../0962.Maximum Width Ramp/Solution.ts | 19 ++++ .../0962.Maximum Width Ramp/Solution2.js | 11 +++ .../0962.Maximum Width Ramp/Solution2.ts | 11 +++ 6 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 solution/0900-0999/0962.Maximum Width Ramp/Solution.js create mode 100644 solution/0900-0999/0962.Maximum Width Ramp/Solution.ts create mode 100644 solution/0900-0999/0962.Maximum Width Ramp/Solution2.js create mode 100644 solution/0900-0999/0962.Maximum Width Ramp/Solution2.ts diff --git a/solution/0900-0999/0962.Maximum Width Ramp/README.md b/solution/0900-0999/0962.Maximum Width Ramp/README.md index 88d4735aede8d..12c9f7c169ad3 100644 --- a/solution/0900-0999/0962.Maximum Width Ramp/README.md +++ b/solution/0900-0999/0962.Maximum Width Ramp/README.md @@ -162,6 +162,96 @@ func maxWidthRamp(nums []int) int { } ``` +#### TypeScript + +```ts +function maxWidthRamp(nums: number[]): number { + let [ans, n] = [0, nums.length]; + const stk: number[] = []; + + for (let i = 0; i < n - 1; i++) { + if (stk.length === 0 || nums[stk.at(-1)!]> nums[i]) { + stk.push(i); + } + } + + for (let i = n - 1; i>= 0; i--) { + while (stk.length && nums[stk.at(-1)!] <= nums[i]) { + ans = Math.max(ans, i - stk.pop()!); + } + if (stk.length === 0) break; + } + + return ans; +} +``` + +#### JavaScript + +```js +function maxWidthRamp(nums) { + let [ans, n] = [0, nums.length]; + const stk = []; + + for (let i = 0; i < n - 1; i++) { + if (stk.length === 0 || nums[stk.at(-1)]> nums[i]) { + stk.push(i); + } + } + + for (let i = n - 1; i>= 0; i--) { + while (stk.length && nums[stk.at(-1)] <= nums[i]) { + ans = Math.max(ans, i - stk.pop()); + } + if (stk.length === 0) break; + } + + return ans; +} +``` + + + + + + + +### Solution 2: Sorting + + + +#### TypeScript + +```ts +function maxWidthRamp(nums: number[]): number { + const idx = nums.map((x, i) => [x, i]).sort(([a], [b]) => a - b); + let [ans, j] = [0, nums.length]; + + for (const [_, i] of idx) { + ans = Math.max(ans, i - j); + j = Math.min(j, i); + } + + return ans; +} +``` + +#### JavaScript + +```js +function maxWidthRamp(nums) { + const idx = nums.map((x, i) => [x, i]).sort(([a], [b]) => a - b); + let [ans, j] = [0, nums.length]; + + for (const [_, i] of idx) { + ans = Math.max(ans, i - j); + j = Math.min(j, i); + } + + return ans; +} +``` + diff --git a/solution/0900-0999/0962.Maximum Width Ramp/README_EN.md b/solution/0900-0999/0962.Maximum Width Ramp/README_EN.md index 58da0809f55fe..5f3f6a6395ed8 100644 --- a/solution/0900-0999/0962.Maximum Width Ramp/README_EN.md +++ b/solution/0900-0999/0962.Maximum Width Ramp/README_EN.md @@ -53,7 +53,7 @@ tags: -### Solution 1 +### Solution 1: Monotonic stack @@ -150,6 +150,96 @@ func maxWidthRamp(nums []int) int { } ``` +#### TypeScript + +```ts +function maxWidthRamp(nums: number[]): number { + let [ans, n] = [0, nums.length]; + const stk: number[] = []; + + for (let i = 0; i < n - 1; i++) { + if (stk.length === 0 || nums[stk.at(-1)!]> nums[i]) { + stk.push(i); + } + } + + for (let i = n - 1; i>= 0; i--) { + while (stk.length && nums[stk.at(-1)!] <= nums[i]) { + ans = Math.max(ans, i - stk.pop()!); + } + if (stk.length === 0) break; + } + + return ans; +} +``` + +#### JavaScript + +```js +function maxWidthRamp(nums) { + let [ans, n] = [0, nums.length]; + const stk = []; + + for (let i = 0; i < n - 1; i++) { + if (stk.length === 0 || nums[stk.at(-1)]> nums[i]) { + stk.push(i); + } + } + + for (let i = n - 1; i>= 0; i--) { + while (stk.length && nums[stk.at(-1)] <= nums[i]) { + ans = Math.max(ans, i - stk.pop()); + } + if (stk.length === 0) break; + } + + return ans; +} +``` + + + + + + + +### Solution 2: Sorting + + + +#### TypeScript + +```ts +function maxWidthRamp(nums: number[]): number { + const idx = nums.map((x, i) => [x, i]).sort(([a], [b]) => a - b); + let [ans, j] = [0, nums.length]; + + for (const [_, i] of idx) { + ans = Math.max(ans, i - j); + j = Math.min(j, i); + } + + return ans; +} +``` + +#### JavaScript + +```js +function maxWidthRamp(nums) { + const idx = nums.map((x, i) => [x, i]).sort(([a], [b]) => a - b); + let [ans, j] = [0, nums.length]; + + for (const [_, i] of idx) { + ans = Math.max(ans, i - j); + j = Math.min(j, i); + } + + return ans; +} +``` + diff --git a/solution/0900-0999/0962.Maximum Width Ramp/Solution.js b/solution/0900-0999/0962.Maximum Width Ramp/Solution.js new file mode 100644 index 0000000000000..a9fa8afd3867d --- /dev/null +++ b/solution/0900-0999/0962.Maximum Width Ramp/Solution.js @@ -0,0 +1,19 @@ +function maxWidthRamp(nums) { + let [ans, n] = [0, nums.length]; + const stk = []; + + for (let i = 0; i < n - 1; i++) { + if (stk.length === 0 || nums[stk.at(-1)]> nums[i]) { + stk.push(i); + } + } + + for (let i = n - 1; i>= 0; i--) { + while (stk.length && nums[stk.at(-1)] <= nums[i]) { + ans = Math.max(ans, i - stk.pop()); + } + if (stk.length === 0) break; + } + + return ans; +} diff --git a/solution/0900-0999/0962.Maximum Width Ramp/Solution.ts b/solution/0900-0999/0962.Maximum Width Ramp/Solution.ts new file mode 100644 index 0000000000000..c27a741d4de18 --- /dev/null +++ b/solution/0900-0999/0962.Maximum Width Ramp/Solution.ts @@ -0,0 +1,19 @@ +function maxWidthRamp(nums: number[]): number { + let [ans, n] = [0, nums.length]; + const stk: number[] = []; + + for (let i = 0; i < n - 1; i++) { + if (stk.length === 0 || nums[stk.at(-1)!]> nums[i]) { + stk.push(i); + } + } + + for (let i = n - 1; i>= 0; i--) { + while (stk.length && nums[stk.at(-1)!] <= nums[i]) { + ans = Math.max(ans, i - stk.pop()!); + } + if (stk.length === 0) break; + } + + return ans; +} diff --git a/solution/0900-0999/0962.Maximum Width Ramp/Solution2.js b/solution/0900-0999/0962.Maximum Width Ramp/Solution2.js new file mode 100644 index 0000000000000..dfb3998e8f9a6 --- /dev/null +++ b/solution/0900-0999/0962.Maximum Width Ramp/Solution2.js @@ -0,0 +1,11 @@ +function maxWidthRamp(nums) { + const idx = nums.map((x, i) => [x, i]).sort(([a], [b]) => a - b); + let [ans, j] = [0, nums.length]; + + for (const [_, i] of idx) { + ans = Math.max(ans, i - j); + j = Math.min(j, i); + } + + return ans; +} diff --git a/solution/0900-0999/0962.Maximum Width Ramp/Solution2.ts b/solution/0900-0999/0962.Maximum Width Ramp/Solution2.ts new file mode 100644 index 0000000000000..ee30f48ad0ac5 --- /dev/null +++ b/solution/0900-0999/0962.Maximum Width Ramp/Solution2.ts @@ -0,0 +1,11 @@ +function maxWidthRamp(nums: number[]): number { + const idx = nums.map((x, i) => [x, i]).sort(([a], [b]) => a - b); + let [ans, j] = [0, nums.length]; + + for (const [_, i] of idx) { + ans = Math.max(ans, i - j); + j = Math.min(j, i); + } + + return ans; +} From 06f06ebcd25659e4957e5439ecb3bc36ac80911e Mon Sep 17 00:00:00 2001 From: acbin <44314231+acbin@users.noreply.github.com> Date: 2024年10月11日 08:47:47 +0800 Subject: [PATCH 2/2] Update README.md --- solution/0900-0999/0962.Maximum Width Ramp/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/0900-0999/0962.Maximum Width Ramp/README.md b/solution/0900-0999/0962.Maximum Width Ramp/README.md index 12c9f7c169ad3..2401ba1c2e83b 100644 --- a/solution/0900-0999/0962.Maximum Width Ramp/README.md +++ b/solution/0900-0999/0962.Maximum Width Ramp/README.md @@ -216,7 +216,7 @@ function maxWidthRamp(nums) { -### Solution 2: Sorting +### 方法二:排序

AltStyle によって変換されたページ (->オリジナル) /