Skip to content

Commit 3092c40

Browse files
committed
feat: update solutions to lc problems: No.0724,1480
* No.0724.Find Pivot Index * No.1480.Running Sum of 1d Array
1 parent 8144034 commit 3092c40

File tree

8 files changed

+164
-40
lines changed

8 files changed

+164
-40
lines changed

solution/0700-0799/0724.Find Pivot Index/README.md

Lines changed: 74 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262

6363
<!-- 这里可写通用的实现逻辑 -->
6464

65-
前缀和
65+
**方法一:前缀和**
6666

6767
<!-- tabs:start -->
6868

@@ -81,6 +81,18 @@ class Solution:
8181
return -1
8282
```
8383

84+
```python
85+
class Solution:
86+
def pivotIndex(self, nums: List[int]) -> int:
87+
l, r = 0, sum(nums)
88+
for i, v in enumerate(nums):
89+
r -= v
90+
if l == r:
91+
return i
92+
l += v
93+
return -1
94+
```
95+
8496
### **Java**
8597

8698
<!-- 这里可写当前语言的特殊实现逻辑 -->
@@ -105,16 +117,37 @@ class Solution {
105117
}
106118
```
107119

120+
```java
121+
class Solution {
122+
public int pivotIndex(int[] nums) {
123+
int l = 0, r = 0;
124+
for (int v : nums) {
125+
r += v;
126+
}
127+
for (int i = 0; i < nums.length; ++i) {
128+
r -= nums[i];
129+
if (l == r) {
130+
return i;
131+
}
132+
l += nums[i];
133+
}
134+
return -1;
135+
}
136+
}
137+
```
138+
108139
### **TypeScript**
109140

110141
```ts
111142
function pivotIndex(nums: number[]): number {
112-
let rightSum = nums.reduce((a, c) => a + c, 0),
113-
leftSum = 0;
114-
for (let i = 0; i < nums.length; i++) {
115-
rightSum -= nums[i];
116-
if (leftSum == rightSum) return i;
117-
leftSum += nums[i];
143+
let l = 0;
144+
let r = nums.reduce((a, b) => a + b, 0);
145+
for (let i = 0; i < nums.length; ++i) {
146+
r -= nums[i];
147+
if (l == r) {
148+
return i;
149+
}
150+
l += nums[i];
118151
}
119152
return -1;
120153
}
@@ -141,6 +174,23 @@ public:
141174
};
142175
```
143176
177+
```cpp
178+
class Solution {
179+
public:
180+
int pivotIndex(vector<int>& nums) {
181+
int l = 0, r = 0;
182+
for (int& v : nums) r += v;
183+
for (int i = 0; i < nums.size(); ++i)
184+
{
185+
r -= nums[i];
186+
if (l == r) return i;
187+
l += nums[i];
188+
}
189+
return -1;
190+
}
191+
};
192+
```
193+
144194
### **Go**
145195

146196
```go
@@ -160,6 +210,23 @@ func pivotIndex(nums []int) int {
160210
}
161211
```
162212

213+
```go
214+
func pivotIndex(nums []int) int {
215+
l, r := 0, 0
216+
for _, v := range nums {
217+
r += v
218+
}
219+
for i, v := range nums {
220+
r -= v
221+
if l == r {
222+
return i
223+
}
224+
l += v
225+
}
226+
return -1
227+
}
228+
```
229+
163230
### **...**
164231

165232
```

solution/0700-0799/0724.Find Pivot Index/README_EN.md

Lines changed: 73 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,18 @@ class Solution:
7171
return -1
7272
```
7373

74+
```python
75+
class Solution:
76+
def pivotIndex(self, nums: List[int]) -> int:
77+
l, r = 0, sum(nums)
78+
for i, v in enumerate(nums):
79+
r -= v
80+
if l == r:
81+
return i
82+
l += v
83+
return -1
84+
```
85+
7486
### **Java**
7587

7688
```java
@@ -93,16 +105,37 @@ class Solution {
93105
}
94106
```
95107

108+
```java
109+
class Solution {
110+
public int pivotIndex(int[] nums) {
111+
int l = 0, r = 0;
112+
for (int v : nums) {
113+
r += v;
114+
}
115+
for (int i = 0; i < nums.length; ++i) {
116+
r -= nums[i];
117+
if (l == r) {
118+
return i;
119+
}
120+
l += nums[i];
121+
}
122+
return -1;
123+
}
124+
}
125+
```
126+
96127
### **TypeScript**
97128

98129
```ts
99130
function pivotIndex(nums: number[]): number {
100-
let rightSum = nums.reduce((a, c) => a + c, 0),
101-
leftSum = 0;
102-
for (let i = 0; i < nums.length; i++) {
103-
rightSum -= nums[i];
104-
if (leftSum == rightSum) return i;
105-
leftSum += nums[i];
131+
let l = 0;
132+
let r = nums.reduce((a, b) => a + b, 0);
133+
for (let i = 0; i < nums.length; ++i) {
134+
r -= nums[i];
135+
if (l == r) {
136+
return i;
137+
}
138+
l += nums[i];
106139
}
107140
return -1;
108141
}
@@ -129,6 +162,23 @@ public:
129162
};
130163
```
131164
165+
```cpp
166+
class Solution {
167+
public:
168+
int pivotIndex(vector<int>& nums) {
169+
int l = 0, r = 0;
170+
for (int& v : nums) r += v;
171+
for (int i = 0; i < nums.size(); ++i)
172+
{
173+
r -= nums[i];
174+
if (l == r) return i;
175+
l += nums[i];
176+
}
177+
return -1;
178+
}
179+
};
180+
```
181+
132182
### **Go**
133183

134184
```go
@@ -148,6 +198,23 @@ func pivotIndex(nums []int) int {
148198
}
149199
```
150200

201+
```go
202+
func pivotIndex(nums []int) int {
203+
l, r := 0, 0
204+
for _, v := range nums {
205+
r += v
206+
}
207+
for i, v := range nums {
208+
r -= v
209+
if l == r {
210+
return i
211+
}
212+
l += v
213+
}
214+
return -1
215+
}
216+
```
217+
151218
### **...**
152219

153220
```
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
function pivotIndex(nums: number[]): number {
2-
let rightSum = nums.reduce((a, c) => a + c, 0),
3-
leftSum = 0;
4-
for (let i = 0; i < nums.length; i++) {
5-
rightSum -= nums[i];
6-
if (leftSum == rightSum) return i;
7-
leftSum += nums[i];
2+
let l = 0;
3+
let r = nums.reduce((a, b) => a + b, 0);
4+
for (let i = 0; i < nums.length; ++i) {
5+
r -= nums[i];
6+
if (l == r) {
7+
return i;
8+
}
9+
l += nums[i];
810
}
911
return -1;
1012
}

solution/1400-1499/1480.Running Sum of 1d Array/README.md

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
<!-- 这里可写通用的实现逻辑 -->
4545

46-
原地修改数组。
46+
**方法一:前缀和**
4747

4848
<!-- tabs:start -->
4949

@@ -54,9 +54,7 @@
5454
```python
5555
class Solution:
5656
def runningSum(self, nums: List[int]) -> List[int]:
57-
for i in range(1, len(nums)):
58-
nums[i] += nums[i - 1]
59-
return nums
57+
return list(accumulate(nums))
6058
```
6159

6260
### **Java**
@@ -80,9 +78,7 @@ class Solution {
8078
class Solution {
8179
public:
8280
vector<int> runningSum(vector<int>& nums) {
83-
for (int i = 1; i < nums.size(); ++i) {
84-
nums[i] += nums[i - 1];
85-
}
81+
for (int i = 1; i < nums.size(); ++i) nums[i] += nums[i - 1];
8682
return nums;
8783
}
8884
};

solution/1400-1499/1480.Running Sum of 1d Array/README_EN.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@
5858
```python
5959
class Solution:
6060
def runningSum(self, nums: List[int]) -> List[int]:
61-
for i in range(1, len(nums)):
62-
nums[i] += nums[i - 1]
63-
return nums
61+
return list(accumulate(nums))
6462
```
6563

6664
### **Java**
@@ -82,9 +80,7 @@ class Solution {
8280
class Solution {
8381
public:
8482
vector<int> runningSum(vector<int>& nums) {
85-
for (int i = 1; i < nums.size(); ++i) {
86-
nums[i] += nums[i - 1];
87-
}
83+
for (int i = 1; i < nums.size(); ++i) nums[i] += nums[i - 1];
8884
return nums;
8985
}
9086
};
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
class Solution {
22
public:
33
vector<int> runningSum(vector<int>& nums) {
4-
for (int i = 1; i < nums.size(); ++i) {
5-
nums[i] += nums[i - 1];
6-
}
4+
for (int i = 1; i < nums.size(); ++i) nums[i] += nums[i - 1];
75
return nums;
86
}
97
};
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
class Solution:
22
def runningSum(self, nums: List[int]) -> List[int]:
3-
for i in range(1, len(nums)):
4-
nums[i] += nums[i - 1]
5-
return nums
3+
return list(accumulate(nums))

solution/2300-2399/2322.Minimum Score After Removals on a Tree/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@
7070

7171
**方法一:DFS + 子树异或和**
7272

73-
枚举 $[0, n)$ 的每个点 $i$ 作为树的根节点,将根节点与某个子节点相连的边作为第一条被删除的边。这样我们就获得了两个连通块,我们记包含根节点 $i$ 的连通块为 $A$,不包含根节点 $i$ 的连通块为 $B$。
73+
枚举 $[0,n)$ 的每个点 $i$ 作为树的根节点,将根节点与某个子节点相连的边作为第一条被删除的边。这样我们就获得了两个连通块,我们记包含根节点 $i$ 的连通块为 $A$,不包含根节点 $i$ 的连通块为 $B$。
7474

7575
在 $A$ 中枚举第二条被删除的边。那么 $A$ 也会被划分成两个连通块 $C$ 和 $D$。
7676

77-
记每个连通块的异或和为 $S_i$,那么对于枚举的每一种情况,得到的分数为 $max(S_B, S_C, S_D)-min(S_B, S_C, S_D))$。求所有情况的最小值作为答案。
77+
记每个连通块的异或和为 $S_i$,那么对于枚举的每一种情况,得到的分数为 $max(S_B, S_C, S_D)-min(S_B, S_C, S_D)$。求所有情况的最小值作为答案。
7878

7979
<!-- tabs:start -->
8080

0 commit comments

Comments
 (0)