diff --git a/solution/0000-0099/0041.First Missing Positive/README.md b/solution/0000-0099/0041.First Missing Positive/README.md index efdeb9c2259c8..6dad14a3ae196 100644 --- a/solution/0000-0099/0041.First Missing Positive/README.md +++ b/solution/0000-0099/0041.First Missing Positive/README.md @@ -73,15 +73,13 @@ tags: ```python class Solution: def firstMissingPositive(self, nums: List[int]) -> int: - def swap(i, j): - nums[i], nums[j] = nums[j], nums[i] - n = len(nums) for i in range(n): while 1 <= nums[i] <= n and nums[i] != nums[nums[i] - 1]: - swap(i, nums[i] - 1) + j = nums[i] - 1 + nums[i], nums[j] = nums[j], nums[i] for i in range(n): - if i + 1 != nums[i]: + if nums[i] != i + 1: return i + 1 return n + 1 ``` @@ -93,12 +91,12 @@ class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; for (int i = 0; i < n; ++i) { - while (nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { + while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { swap(nums, i, nums[i] - 1); } } for (int i = 0; i < n; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } @@ -121,12 +119,12 @@ public: int firstMissingPositive(vector& nums) { int n = nums.size(); for (int i = 0; i < n; ++i) { - while (nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { + while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { swap(nums[i], nums[nums[i] - 1]); } } for (int i = 0; i < n; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } @@ -141,12 +139,12 @@ public: func firstMissingPositive(nums []int) int { n := len(nums) for i := range nums { - for nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i]-1] { + for 0 < nums[i] && nums[i] <= n && nums[i] != nums[nums[i]-1] { nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i] } } - for i, v := range nums { - if i+1 != v { + for i, x := range nums { + if x != i+1 { return i + 1 } } @@ -159,18 +157,18 @@ func firstMissingPositive(nums []int) int { ```ts function firstMissingPositive(nums: number[]): number { const n = nums.length; - let i = 0; - while (i < n) { - const j = nums[i] - 1; - if (j === i || j < 0 || j >= n || nums[i] === nums[j]) { - i++; - } else { + for (let i = 0; i < n; i++) { + while (nums[i] >= 1 && nums[i] <= n && nums[i] !== nums[nums[i] - 1]) { + const j = nums[i] - 1; [nums[i], nums[j]] = [nums[j], nums[i]]; } } - - const res = nums.findIndex((v, i) => v !== i + 1); - return (res === -1 ? n : res) + 1; + for (let i = 0; i < n; i++) { + if (nums[i] !== i + 1) { + return i + 1; + } + } + return n + 1; } ``` @@ -180,21 +178,18 @@ function firstMissingPositive(nums: number[]): number { impl Solution { pub fn first_missing_positive(mut nums: Vec) -> i32 { let n = nums.len(); - let mut i = 0; - while i < n { - let j = nums[i] - 1; - if (i as i32) == j || j < 0 || j >= (n as i32) || nums[i] == nums[j as usize] { - i += 1; - } else { - nums.swap(i, j as usize); + for i in 0..n { + while nums[i] > 0 && nums[i] <= n as i32 && nums[i] != nums[nums[i] as usize - 1] { + let j = nums[i] as usize - 1; + nums.swap(i, j); + } + } + for i in 0..n { + if nums[i] != (i + 1) as i32 { + return (i + 1) as i32; } } - (nums - .iter() - .enumerate() - .position(|(i, &v)| (v as usize) != i + 1) - .unwrap_or(n) as i32) - + 1 + return (n + 1) as i32; } } ``` @@ -231,23 +226,20 @@ public class Solution { ```c int firstMissingPositive(int* nums, int numsSize) { for (int i = 0; i < numsSize; ++i) { - while (nums[i] >= 1 && nums[i] <= numsSize && nums[i] != nums[nums[i] - 1]) { - swap(&nums[i], &nums[nums[i] - 1]); + while (nums[i] > 0 && nums[i] <= numsSize && nums[i] != nums[nums[i] - 1]) { + int j = nums[i] - 1; + int t = nums[i]; + nums[i] = nums[j]; + nums[j] = t; } } for (int i = 0; i < numsSize; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } return numsSize + 1; } - -void swap(int* a, int* b) { - int t = *a; - *a = *b; - *b = t; -} ``` #### PHP @@ -255,32 +247,24 @@ void swap(int* a, int* b) { ```php class Solution { /** - * @param integer[] $nums - * @return integer + * @param Integer[] $nums + * @return Integer */ - function firstMissingPositive($nums) { $n = count($nums); - - for ($i = 0; $i < $n; $i++) { - if ($nums[$i] <= 0) { - $nums[$i] = $n + 1; - } - } - for ($i = 0; $i < $n; $i++) { - $num = abs($nums[$i]); - if ($num <= $n) { - $nums[$num - 1] = -abs($nums[$num - 1]); + while ($nums[$i] >= 1 && $nums[$i] <= $n && $nums[$i] != $nums[$nums[$i] - 1]) { + $j = $nums[$i] - 1; + $t = $nums[$i]; + $nums[$i] = $nums[$j]; + $nums[$j] = $t; } } - for ($i = 0; $i < $n; $i++) { - if ($nums[$i] > 0) { + if ($nums[$i] != $i + 1) { return $i + 1; } } - return $n + 1; } } diff --git a/solution/0000-0099/0041.First Missing Positive/README_EN.md b/solution/0000-0099/0041.First Missing Positive/README_EN.md index cfebe29e8cf3f..e502e9179a7d5 100644 --- a/solution/0000-0099/0041.First Missing Positive/README_EN.md +++ b/solution/0000-0099/0041.First Missing Positive/README_EN.md @@ -75,15 +75,13 @@ The time complexity is $O(n)$, where $n$ is the length of the array. The space c ```python class Solution: def firstMissingPositive(self, nums: List[int]) -> int: - def swap(i, j): - nums[i], nums[j] = nums[j], nums[i] - n = len(nums) for i in range(n): while 1 <= nums[i] <= n and nums[i] != nums[nums[i] - 1]: - swap(i, nums[i] - 1) + j = nums[i] - 1 + nums[i], nums[j] = nums[j], nums[i] for i in range(n): - if i + 1 != nums[i]: + if nums[i] != i + 1: return i + 1 return n + 1 ``` @@ -95,12 +93,12 @@ class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; for (int i = 0; i < n; ++i) { - while (nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { + while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { swap(nums, i, nums[i] - 1); } } for (int i = 0; i < n; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } @@ -123,12 +121,12 @@ public: int firstMissingPositive(vector& nums) { int n = nums.size(); for (int i = 0; i < n; ++i) { - while (nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { + while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { swap(nums[i], nums[nums[i] - 1]); } } for (int i = 0; i < n; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } @@ -143,12 +141,12 @@ public: func firstMissingPositive(nums []int) int { n := len(nums) for i := range nums { - for nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i]-1] { + for 0 < nums[i] && nums[i] <= n && nums[i] != nums[nums[i]-1] { nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i] } } - for i, v := range nums { - if i+1 != v { + for i, x := range nums { + if x != i+1 { return i + 1 } } @@ -161,18 +159,18 @@ func firstMissingPositive(nums []int) int { ```ts function firstMissingPositive(nums: number[]): number { const n = nums.length; - let i = 0; - while (i < n) { - const j = nums[i] - 1; - if (j === i || j < 0 || j >= n || nums[i] === nums[j]) { - i++; - } else { + for (let i = 0; i < n; i++) { + while (nums[i] >= 1 && nums[i] <= n && nums[i] !== nums[nums[i] - 1]) { + const j = nums[i] - 1; [nums[i], nums[j]] = [nums[j], nums[i]]; } } - - const res = nums.findIndex((v, i) => v !== i + 1); - return (res === -1 ? n : res) + 1; + for (let i = 0; i < n; i++) { + if (nums[i] !== i + 1) { + return i + 1; + } + } + return n + 1; } ``` @@ -182,21 +180,18 @@ function firstMissingPositive(nums: number[]): number { impl Solution { pub fn first_missing_positive(mut nums: Vec) -> i32 { let n = nums.len(); - let mut i = 0; - while i < n { - let j = nums[i] - 1; - if (i as i32) == j || j < 0 || j >= (n as i32) || nums[i] == nums[j as usize] { - i += 1; - } else { - nums.swap(i, j as usize); + for i in 0..n { + while nums[i] > 0 && nums[i] <= n as i32 && nums[i] != nums[nums[i] as usize - 1] { + let j = nums[i] as usize - 1; + nums.swap(i, j); + } + } + for i in 0..n { + if nums[i] != (i + 1) as i32 { + return (i + 1) as i32; } } - (nums - .iter() - .enumerate() - .position(|(i, &v)| (v as usize) != i + 1) - .unwrap_or(n) as i32) - + 1 + return (n + 1) as i32; } } ``` @@ -233,23 +228,20 @@ public class Solution { ```c int firstMissingPositive(int* nums, int numsSize) { for (int i = 0; i < numsSize; ++i) { - while (nums[i] >= 1 && nums[i] <= numsSize && nums[i] != nums[nums[i] - 1]) { - swap(&nums[i], &nums[nums[i] - 1]); + while (nums[i] > 0 && nums[i] <= numsSize && nums[i] != nums[nums[i] - 1]) { + int j = nums[i] - 1; + int t = nums[i]; + nums[i] = nums[j]; + nums[j] = t; } } for (int i = 0; i < numsSize; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } return numsSize + 1; } - -void swap(int* a, int* b) { - int t = *a; - *a = *b; - *b = t; -} ``` #### PHP @@ -257,32 +249,24 @@ void swap(int* a, int* b) { ```php class Solution { /** - * @param integer[] $nums - * @return integer + * @param Integer[] $nums + * @return Integer */ - function firstMissingPositive($nums) { $n = count($nums); - - for ($i = 0; $i < $n; $i++) { - if ($nums[$i] <= 0) { - $nums[$i] = $n + 1; - } - } - for ($i = 0; $i < $n; $i++) { - $num = abs($nums[$i]); - if ($num <= $n) { - $nums[$num - 1] = -abs($nums[$num - 1]); + while ($nums[$i] >= 1 && $nums[$i] <= $n && $nums[$i] != $nums[$nums[$i] - 1]) { + $j = $nums[$i] - 1; + $t = $nums[$i]; + $nums[$i] = $nums[$j]; + $nums[$j] = $t; } } - for ($i = 0; $i < $n; $i++) { - if ($nums[$i] > 0) { + if ($nums[$i] != $i + 1) { return $i + 1; } } - return $n + 1; } } diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.c b/solution/0000-0099/0041.First Missing Positive/Solution.c index 750788f1bf5ec..70a286d26ab96 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.c +++ b/solution/0000-0099/0041.First Missing Positive/Solution.c @@ -1,19 +1,16 @@ int firstMissingPositive(int* nums, int numsSize) { for (int i = 0; i < numsSize; ++i) { - while (nums[i] >= 1 && nums[i] <= numsSize && nums[i] != nums[nums[i] - 1]) { - swap(&nums[i], &nums[nums[i] - 1]); + while (nums[i] > 0 && nums[i] <= numsSize && nums[i] != nums[nums[i] - 1]) { + int j = nums[i] - 1; + int t = nums[i]; + nums[i] = nums[j]; + nums[j] = t; } } for (int i = 0; i < numsSize; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } return numsSize + 1; } - -void swap(int* a, int* b) { - int t = *a; - *a = *b; - *b = t; -} \ No newline at end of file diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.cpp b/solution/0000-0099/0041.First Missing Positive/Solution.cpp index cc5a5c1174cf2..eed72308ef5e9 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.cpp +++ b/solution/0000-0099/0041.First Missing Positive/Solution.cpp @@ -3,15 +3,15 @@ class Solution { int firstMissingPositive(vector& nums) { int n = nums.size(); for (int i = 0; i < n; ++i) { - while (nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { + while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { swap(nums[i], nums[nums[i] - 1]); } } for (int i = 0; i < n; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } return n + 1; } -}; \ No newline at end of file +}; diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.go b/solution/0000-0099/0041.First Missing Positive/Solution.go index ea7e5b11781d1..1a8e5cc2f6b25 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.go +++ b/solution/0000-0099/0041.First Missing Positive/Solution.go @@ -1,14 +1,14 @@ func firstMissingPositive(nums []int) int { n := len(nums) for i := range nums { - for nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i]-1] { + for 0 < nums[i] && nums[i] <= n && nums[i] != nums[nums[i]-1] { nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i] } } - for i, v := range nums { - if i+1 != v { + for i, x := range nums { + if x != i+1 { return i + 1 } } return n + 1 -} \ No newline at end of file +} diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.java b/solution/0000-0099/0041.First Missing Positive/Solution.java index 56d06ab5f5102..8b64a24752f10 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.java +++ b/solution/0000-0099/0041.First Missing Positive/Solution.java @@ -2,12 +2,12 @@ class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; for (int i = 0; i < n; ++i) { - while (nums[i] >= 1 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { + while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1]) { swap(nums, i, nums[i] - 1); } } for (int i = 0; i < n; ++i) { - if (i + 1 != nums[i]) { + if (nums[i] != i + 1) { return i + 1; } } @@ -19,4 +19,4 @@ private void swap(int[] nums, int i, int j) { nums[i] = nums[j]; nums[j] = t; } -} \ No newline at end of file +} diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.php b/solution/0000-0099/0041.First Missing Positive/Solution.php index f3aa6b8576f47..231c23825fd51 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.php +++ b/solution/0000-0099/0041.First Missing Positive/Solution.php @@ -1,31 +1,23 @@ class Solution { /** - * @param integer[] $nums - * @return integer + * @param Integer[] $nums + * @return Integer */ - function firstMissingPositive($nums) { $n = count($nums); - for ($i = 0; $i < $n; $i++) { - if ($nums[$i] <= 0) { - $nums[$i] = $n + 1; + while ($nums[$i] >= 1 && $nums[$i] <= $n && $nums[$i] != $nums[$nums[$i] - 1]) { + $j = $nums[$i] - 1; + $t = $nums[$i]; + $nums[$i] = $nums[$j]; + $nums[$j] = $t; } } - for ($i = 0; $i < $n; $i++) { - $num = abs($nums[$i]); - if ($num <= $n) { - $nums[$num - 1] = -abs($nums[$num - 1]); - } - } - - for ($i = 0; $i < $n; $i++) { - if ($nums[$i] > 0) { + if ($nums[$i] != $i + 1) { return $i + 1; } } - return $n + 1; } } diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.py b/solution/0000-0099/0041.First Missing Positive/Solution.py index 8e39d1fb22a3d..6b61db4b6b7df 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.py +++ b/solution/0000-0099/0041.First Missing Positive/Solution.py @@ -1,13 +1,11 @@ class Solution: def firstMissingPositive(self, nums: List[int]) -> int: - def swap(i, j): - nums[i], nums[j] = nums[j], nums[i] - n = len(nums) for i in range(n): while 1 <= nums[i] <= n and nums[i] != nums[nums[i] - 1]: - swap(i, nums[i] - 1) + j = nums[i] - 1 + nums[i], nums[j] = nums[j], nums[i] for i in range(n): - if i + 1 != nums[i]: + if nums[i] != i + 1: return i + 1 return n + 1 diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.rs b/solution/0000-0099/0041.First Missing Positive/Solution.rs index ba6dfba223149..1e12ae2a0ebe3 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.rs +++ b/solution/0000-0099/0041.First Missing Positive/Solution.rs @@ -1,20 +1,17 @@ impl Solution { pub fn first_missing_positive(mut nums: Vec) -> i32 { let n = nums.len(); - let mut i = 0; - while i < n { - let j = nums[i] - 1; - if (i as i32) == j || j < 0 || j >= (n as i32) || nums[i] == nums[j as usize] { - i += 1; - } else { - nums.swap(i, j as usize); + for i in 0..n { + while nums[i] > 0 && nums[i] <= n as i32 && nums[i] != nums[nums[i] as usize - 1] { + let j = nums[i] as usize - 1; + nums.swap(i, j); } } - (nums - .iter() - .enumerate() - .position(|(i, &v)| (v as usize) != i + 1) - .unwrap_or(n) as i32) - + 1 + for i in 0..n { + if nums[i] != (i + 1) as i32 { + return (i + 1) as i32; + } + } + return (n + 1) as i32; } } diff --git a/solution/0000-0099/0041.First Missing Positive/Solution.ts b/solution/0000-0099/0041.First Missing Positive/Solution.ts index e2ce77f09daa6..533308ad94a27 100644 --- a/solution/0000-0099/0041.First Missing Positive/Solution.ts +++ b/solution/0000-0099/0041.First Missing Positive/Solution.ts @@ -1,15 +1,15 @@ function firstMissingPositive(nums: number[]): number { const n = nums.length; - let i = 0; - while (i < n) { - const j = nums[i] - 1; - if (j === i || j < 0 || j >= n || nums[i] === nums[j]) { - i++; - } else { + for (let i = 0; i < n; i++) { + while (nums[i] >= 1 && nums[i] <= n && nums[i] !== nums[nums[i] - 1]) { + const j = nums[i] - 1; [nums[i], nums[j]] = [nums[j], nums[i]]; } } - - const res = nums.findIndex((v, i) => v !== i + 1); - return (res === -1 ? n : res) + 1; + for (let i = 0; i < n; i++) { + if (nums[i] !== i + 1) { + return i + 1; + } + } + return n + 1; } diff --git a/solution/0100-0199/0189.Rotate Array/README.md b/solution/0100-0199/0189.Rotate Array/README.md index 0a4691e77372a..2df8936c30d54 100644 --- a/solution/0100-0199/0189.Rotate Array/README.md +++ b/solution/0100-0199/0189.Rotate Array/README.md @@ -38,7 +38,7 @@ tags:
 输入:nums = [-1,-100,3,99], k = 2
 输出:[3,99,-1,-100]
-解释: 
+解释:
 向右轮转 1 步: [99,-1,-100,3]
 向右轮转 2 步: [3,99,-1,-100]
@@ -248,23 +248,4 @@ public class Solution { - - -### 方法二 - - - -#### Python3 - -```python -class Solution: - def rotate(self, nums: List[int], k: int) -> None: - k %= len(nums) - nums[:] = nums[-k:] + nums[:-k] -``` - - - - - diff --git a/solution/0100-0199/0189.Rotate Array/README_EN.md b/solution/0100-0199/0189.Rotate Array/README_EN.md index 0ef0680cd0580..4779681289ac7 100644 --- a/solution/0100-0199/0189.Rotate Array/README_EN.md +++ b/solution/0100-0199/0189.Rotate Array/README_EN.md @@ -37,7 +37,7 @@ rotate 3 steps to the right: [5,6,7,1,2,3,4]
 Input: nums = [-1,-100,3,99], k = 2
 Output: [3,99,-1,-100]
-Explanation: 
+Explanation:
 rotate 1 steps to the right: [99,-1,-100,3]
 rotate 2 steps to the right: [3,99,-1,-100]
 
@@ -246,23 +246,4 @@ public class Solution { - - -### Solution 2 - - - -#### Python3 - -```python -class Solution: - def rotate(self, nums: List[int], k: int) -> None: - k %= len(nums) - nums[:] = nums[-k:] + nums[:-k] -``` - - - - - diff --git a/solution/0100-0199/0189.Rotate Array/Solution2.py b/solution/0100-0199/0189.Rotate Array/Solution2.py deleted file mode 100644 index 2ca1930ff6c1f..0000000000000 --- a/solution/0100-0199/0189.Rotate Array/Solution2.py +++ /dev/null @@ -1,4 +0,0 @@ -class Solution: - def rotate(self, nums: List[int], k: int) -> None: - k %= len(nums) - nums[:] = nums[-k:] + nums[:-k] diff --git a/solution/0200-0299/0238.Product of Array Except Self/README.md b/solution/0200-0299/0238.Product of Array Except Self/README.md index 1009191a4a33e..67da7fdbca128 100644 --- a/solution/0200-0299/0238.Product of Array Except Self/README.md +++ b/solution/0200-0299/0238.Product of Array Except Self/README.md @@ -61,15 +61,15 @@ tags: ### 方法一:两次遍历 -我们定义两个变量 $left$ 和 $right$,分别表示当前元素左边所有元素的乘积和右边所有元素的乘积。初始时 $left=1$, $right=1$。定义一个长度为 $n$ 的答案数组 $ans$。 +我们定义两个变量 $\textit{left}$ 和 $\textit{right}$,分别表示当前元素左边所有元素的乘积和右边所有元素的乘积。初始时 $\textit{left}=1$, $\textit{right}=1$。定义一个长度为 $n$ 的答案数组 $\textit{ans}$。 -我们先从左到右遍历数组,对于遍历到的第 $i$ 个元素,我们用 $left$ 更新 $ans[i]$,然后 $left$ 乘以 $nums[i]$。 +我们先从左到右遍历数组,对于遍历到的第 $i$ 个元素,我们用 $\textit{left}$ 更新 $\textit{ans}[i]$,然后 $\textit{left}$ 乘以 $\textit{nums}[i]$。 -然后,我们从右到左遍历数组,对于遍历到的第 $i$ 个元素,我们更新 $ans[i]$ 为 $ans[i] \times right$,然后 $right$ 乘以 $nums[i]$。 +然后,我们从右到左遍历数组,对于遍历到的第 $i$ 个元素,我们更新 $\textit{ans}[i]$ 为 $\textit{ans}[i] \times \textit{right}$,然后 $\textit{right}$ 乘以 $\textit{nums}[i]$。 -遍历结束后,数组 `ans` 即为所求的答案。 +遍历结束后,返回答案数组 $\textit{ans}$。 -时间复杂度 $O(n)$,其中 $n$ 是数组 `nums` 的长度。忽略答案数组的空间消耗,空间复杂度 $O(1)$。 +时间复杂度 $O(n)$,其中 $n$ 是数组 $\textit{nums}$ 的长度。忽略答案数组的空间消耗,空间复杂度 $O(1)$。 @@ -258,22 +258,4 @@ class Solution { - - -### 方法二 - - - -#### TypeScript - -```ts -function productExceptSelf(nums: number[]): number[] { - return nums.map((_, i) => nums.reduce((pre, val, j) => pre * (i === j ? 1 : val), 1)); -} -``` - - - - - diff --git a/solution/0200-0299/0238.Product of Array Except Self/README_EN.md b/solution/0200-0299/0238.Product of Array Except Self/README_EN.md index 646950a83f675..abee0cb2371b0 100644 --- a/solution/0200-0299/0238.Product of Array Except Self/README_EN.md +++ b/solution/0200-0299/0238.Product of Array Except Self/README_EN.md @@ -51,15 +51,15 @@ tags: ### Solution 1: Two Passes -We define two variables $left$ and $right$, which represent the product of all elements to the left and right of the current element respectively. Initially, $left=1$, $right=1$. Define an answer array $ans$ of length $n$. +We define two variables $\textit{left}$ and $\textit{right}$ to represent the product of all elements to the left and right of the current element, respectively. Initially, $\textit{left} = 1$ and $\textit{right} = 1$. We define an answer array $\textit{ans}$ of length $n$. -We first traverse the array from left to right, for the $i$th element we update $ans[i]$ with $left$, then $left$ multiplied by $nums[i]$. +First, we traverse the array from left to right. For the $i$-th element, we update $\textit{ans}[i]$ with $\textit{left}$, then multiply $\textit{left}$ by $\textit{nums}[i]$. -Then, we traverse the array from right to left, for the $i$th element, we update $ans[i]$ to $ans[i] \times right$, then $right$ multiplied by $nums[i]$. +Next, we traverse the array from right to left. For the $i$-th element, we update $\textit{ans}[i]$ to $\textit{ans}[i] \times \textit{right}$, then multiply $\textit{right}$ by $\textit{nums}[i]$. -After the traversal, the array `ans` is the answer. +After the traversal, we return the answer array $\textit{ans}$. -The time complexity is $O(n)$, where $n$ is the length of the array `nums`. Ignore the space consumption of the answer array, the space complexity is $O(1)$. +The time complexity is $O(n)$, where $n$ is the length of the array $\textit{nums}$. Ignoring the space consumption of the answer array, the space complexity is $O(1)$. @@ -248,22 +248,4 @@ class Solution { - - -### Solution 2 - - - -#### TypeScript - -```ts -function productExceptSelf(nums: number[]): number[] { - return nums.map((_, i) => nums.reduce((pre, val, j) => pre * (i === j ? 1 : val), 1)); -} -``` - - - - - diff --git a/solution/0200-0299/0238.Product of Array Except Self/Solution2.ts b/solution/0200-0299/0238.Product of Array Except Self/Solution2.ts deleted file mode 100644 index 312ea12c153ab..0000000000000 --- a/solution/0200-0299/0238.Product of Array Except Self/Solution2.ts +++ /dev/null @@ -1,3 +0,0 @@ -function productExceptSelf(nums: number[]): number[] { - return nums.map((_, i) => nums.reduce((pre, val, j) => pre * (i === j ? 1 : val), 1)); -}