From f6247d21300f9019a7f7640a764b118fc6ef52d2 Mon Sep 17 00:00:00 2001 From: rain84 Date: Mon, 11 Nov 2024 15:02:26 +0300 Subject: [PATCH 1/2] feat: add solutions to lc problem: No.2601 --- .../README.md | 82 +++++++++++++++++++ .../README_EN.md | 82 +++++++++++++++++++ .../Solution2.js | 31 +++++++ .../Solution2.ts | 31 +++++++ 4 files changed, 226 insertions(+) create mode 100644 solution/2600-2699/2601.Prime Subtraction Operation/Solution2.js create mode 100644 solution/2600-2699/2601.Prime Subtraction Operation/Solution2.ts diff --git a/solution/2600-2699/2601.Prime Subtraction Operation/README.md b/solution/2600-2699/2601.Prime Subtraction Operation/README.md index b6f011b5d6c23..5694f155ba53f 100644 --- a/solution/2600-2699/2601.Prime Subtraction Operation/README.md +++ b/solution/2600-2699/2601.Prime Subtraction Operation/README.md @@ -274,4 +274,86 @@ function primeSubOperation(nums: number[]): boolean { + + +### Solution 2: Preprocessing prime numbers + + + +#### TypeScript + +```ts +function primeSubOperation(nums: number[]): boolean { + const p: number[] = []; + const max = Math.max(...nums); + + for (let i = 2; i < max; i++) { + let isPrime = true; + + for (const x of p) { + if (i % x === 0) { + isPrime = false; + break; + } + } + + while (isPrime && p.length <= i) { + p.push(i); + } + } + + for (let i = nums.length - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) continue; + + const [x, next] = [nums[i], nums[i + 1]]; + const prime = p[x - next + 1]; + + if (!prime || prime >= x) return false; + nums[i] -= prime; + } + + return true; +} +``` + +#### JavaScript + +```js +function primeSubOperation(nums) { + const p = []; + const max = Math.max(...nums); + + for (let i = 2; i < max; i++) { + let isPrime = true; + + for (const x of p) { + if (i % x === 0) { + isPrime = false; + break; + } + } + + while (isPrime && p.length <= i) { + p.push(i); + } + } + + for (let i = nums.length - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) continue; + + const [x, next] = [nums[i], nums[i + 1]]; + const prime = p[x - next + 1]; + + if (!prime || prime >= x) return false; + nums[i] -= prime; + } + + return true; +} +``` + + + + + diff --git a/solution/2600-2699/2601.Prime Subtraction Operation/README_EN.md b/solution/2600-2699/2601.Prime Subtraction Operation/README_EN.md index 07438db2f7fb5..047fb08590edf 100644 --- a/solution/2600-2699/2601.Prime Subtraction Operation/README_EN.md +++ b/solution/2600-2699/2601.Prime Subtraction Operation/README_EN.md @@ -271,4 +271,86 @@ function primeSubOperation(nums: number[]): boolean { + + +### Solution 2: Preprocessing prime numbers + + + +#### TypeScript + +```ts +function primeSubOperation(nums: number[]): boolean { + const p: number[] = []; + const max = Math.max(...nums); + + for (let i = 2; i < max; i++) { + let isPrime = true; + + for (const x of p) { + if (i % x === 0) { + isPrime = false; + break; + } + } + + while (isPrime && p.length <= i) { + p.push(i); + } + } + + for (let i = nums.length - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) continue; + + const [x, next] = [nums[i], nums[i + 1]]; + const prime = p[x - next + 1]; + + if (!prime || prime >= x) return false; + nums[i] -= prime; + } + + return true; +} +``` + +#### JavaScript + +```js +function primeSubOperation(nums) { + const p = []; + const max = Math.max(...nums); + + for (let i = 2; i < max; i++) { + let isPrime = true; + + for (const x of p) { + if (i % x === 0) { + isPrime = false; + break; + } + } + + while (isPrime && p.length <= i) { + p.push(i); + } + } + + for (let i = nums.length - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) continue; + + const [x, next] = [nums[i], nums[i + 1]]; + const prime = p[x - next + 1]; + + if (!prime || prime >= x) return false; + nums[i] -= prime; + } + + return true; +} +``` + + + + + diff --git a/solution/2600-2699/2601.Prime Subtraction Operation/Solution2.js b/solution/2600-2699/2601.Prime Subtraction Operation/Solution2.js new file mode 100644 index 0000000000000..262e9d4983b26 --- /dev/null +++ b/solution/2600-2699/2601.Prime Subtraction Operation/Solution2.js @@ -0,0 +1,31 @@ +function primeSubOperation(nums) { + const p = []; + const max = Math.max(...nums); + + for (let i = 2; i < max; i++) { + let isPrime = true; + + for (const x of p) { + if (i % x === 0) { + isPrime = false; + break; + } + } + + while (isPrime && p.length <= i) { + p.push(i); + } + } + + for (let i = nums.length - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) continue; + + const [x, next] = [nums[i], nums[i + 1]]; + const prime = p[x - next + 1]; + + if (!prime || prime >= x) return false; + nums[i] -= prime; + } + + return true; +} diff --git a/solution/2600-2699/2601.Prime Subtraction Operation/Solution2.ts b/solution/2600-2699/2601.Prime Subtraction Operation/Solution2.ts new file mode 100644 index 0000000000000..4b2a46735fafc --- /dev/null +++ b/solution/2600-2699/2601.Prime Subtraction Operation/Solution2.ts @@ -0,0 +1,31 @@ +function primeSubOperation(nums: number[]): boolean { + const p: number[] = []; + const max = Math.max(...nums); + + for (let i = 2; i < max; i++) { + let isPrime = true; + + for (const x of p) { + if (i % x === 0) { + isPrime = false; + break; + } + } + + while (isPrime && p.length <= i) { + p.push(i); + } + } + + for (let i = nums.length - 2; i >= 0; i--) { + if (nums[i] < nums[i + 1]) continue; + + const [x, next] = [nums[i], nums[i + 1]]; + const prime = p[x - next + 1]; + + if (!prime || prime >= x) return false; + nums[i] -= prime; + } + + return true; +} From fb8bc5aa7542f3170dccd1b43869dd73417dc22e Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Tue, 12 Nov 2024 08:21:08 +0800 Subject: [PATCH 2/2] Update README.md --- solution/2600-2699/2601.Prime Subtraction Operation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/2600-2699/2601.Prime Subtraction Operation/README.md b/solution/2600-2699/2601.Prime Subtraction Operation/README.md index 5694f155ba53f..5d41c8882c8a1 100644 --- a/solution/2600-2699/2601.Prime Subtraction Operation/README.md +++ b/solution/2600-2699/2601.Prime Subtraction Operation/README.md @@ -276,7 +276,7 @@ function primeSubOperation(nums: number[]): boolean { -### Solution 2: Preprocessing prime numbers +### 方法二:预处理素数