Skip to content

Commit a4b5201

Browse files
committed
feat: add solutions to lc problem: No.0724.Find Pivot Index
1 parent 2bb0321 commit a4b5201

File tree

6 files changed

+142
-33
lines changed

6 files changed

+142
-33
lines changed

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

+52-11
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@
6060

6161
<!-- 这里可写通用的实现逻辑 -->
6262

63+
前缀和。
64+
6365
<!-- tabs:start -->
6466

6567
### **Python3**
@@ -69,12 +71,11 @@
6971
```python
7072
class Solution:
7173
def pivotIndex(self, nums: List[int]) -> int:
72-
sums = sum(nums)
73-
pre_sum = 0
74+
s, presum = sum(nums), 0
7475
for i, v in enumerate(nums):
75-
if (pre_sum << 1) == sums - v:
76+
if (presum << 1) == s - v:
7677
return i
77-
pre_sum += v
78+
presum += v
7879
return -1
7980
```
8081

@@ -85,20 +86,60 @@ class Solution:
8586
```java
8687
class Solution {
8788
public int pivotIndex(int[] nums) {
88-
int sums = 0;
89+
int n = nums.length, s = 0;
8990
for (int e : nums) {
90-
sums += e;
91+
s += e;
9192
}
92-
int preSum = 0;
93-
for (int i = 0; i < nums.length; ++i) {
94-
// preSum == sums - nums[i] - preSum
95-
if (preSum << 1 == sums - nums[i]) {
93+
int presum = 0;
94+
for (int i = 0; i < n; ++i) {
95+
// presum == sums - nums[i] - presum
96+
if (presum << 1 == s - nums[i]) {
9697
return i;
9798
}
98-
preSum += nums[i];
99+
presum += nums[i];
100+
}
101+
return -1;
102+
}
103+
}
104+
```
105+
106+
### **C++**
107+
108+
```cpp
109+
class Solution {
110+
public:
111+
int pivotIndex(vector<int> &nums) {
112+
int s = 0;
113+
for (int e : nums)
114+
s += e;
115+
int presum = 0;
116+
for (int i = 0; i < nums.size(); ++i)
117+
{
118+
if (presum * 2 == s - nums[i])
119+
return i;
120+
presum += nums[i];
99121
}
100122
return -1;
101123
}
124+
};
125+
```
126+
127+
### **Go**
128+
129+
```go
130+
func pivotIndex(nums []int) int {
131+
s := 0
132+
for _, e := range nums {
133+
s += e
134+
}
135+
presum := 0
136+
for i, e := range nums {
137+
if presum<<1 == s-e {
138+
return i
139+
}
140+
presum += e
141+
}
142+
return -1
102143
}
103144
```
104145

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

+50-11
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,11 @@ Right sum = nums[1] + nums[2] = 1 + -1 = 0
6161
```python
6262
class Solution:
6363
def pivotIndex(self, nums: List[int]) -> int:
64-
sums = sum(nums)
65-
pre_sum = 0
64+
s, presum = sum(nums), 0
6665
for i, v in enumerate(nums):
67-
if (pre_sum << 1) == sums - v:
66+
if (presum << 1) == s - v:
6867
return i
69-
pre_sum += v
68+
presum += v
7069
return -1
7170
```
7271

@@ -75,23 +74,63 @@ class Solution:
7574
```java
7675
class Solution {
7776
public int pivotIndex(int[] nums) {
78-
int sums = 0;
77+
int n = nums.length, s = 0;
7978
for (int e : nums) {
80-
sums += e;
79+
s += e;
8180
}
82-
int preSum = 0;
83-
for (int i = 0; i < nums.length; ++i) {
84-
// preSum == sums - nums[i] - preSum
85-
if (preSum << 1 == sums - nums[i]) {
81+
int presum = 0;
82+
for (int i = 0; i < n; ++i) {
83+
// presum == sums - nums[i] - presum
84+
if (presum << 1 == s - nums[i]) {
8685
return i;
8786
}
88-
preSum += nums[i];
87+
presum += nums[i];
8988
}
9089
return -1;
9190
}
9291
}
9392
```
9493

94+
### **C++**
95+
96+
```cpp
97+
class Solution {
98+
public:
99+
int pivotIndex(vector<int> &nums) {
100+
int s = 0;
101+
for (int e : nums)
102+
s += e;
103+
int presum = 0;
104+
for (int i = 0; i < nums.size(); ++i)
105+
{
106+
if (presum * 2 == s - nums[i])
107+
return i;
108+
presum += nums[i];
109+
}
110+
return -1;
111+
}
112+
};
113+
```
114+
115+
### **Go**
116+
117+
```go
118+
func pivotIndex(nums []int) int {
119+
s := 0
120+
for _, e := range nums {
121+
s += e
122+
}
123+
presum := 0
124+
for i, e := range nums {
125+
if presum<<1 == s-e {
126+
return i
127+
}
128+
presum += e
129+
}
130+
return -1
131+
}
132+
```
133+
95134
### **...**
96135

97136
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int pivotIndex(vector<int> &nums) {
4+
int s = 0;
5+
for (int e : nums)
6+
s += e;
7+
int presum = 0;
8+
for (int i = 0; i < nums.size(); ++i)
9+
{
10+
if (presum * 2 == s - nums[i])
11+
return i;
12+
presum += nums[i];
13+
}
14+
return -1;
15+
}
16+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func pivotIndex(nums []int) int {
2+
s := 0
3+
for _, e := range nums {
4+
s += e
5+
}
6+
presum := 0
7+
for i, e := range nums {
8+
if presum<<1 == s-e {
9+
return i
10+
}
11+
presum += e
12+
}
13+
return -1
14+
}

solution/0700-0799/0724.Find Pivot Index/Solution.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
class Solution {
22
public int pivotIndex(int[] nums) {
3-
int sums = 0;
3+
int n = nums.length, s = 0;
44
for (int e : nums) {
5-
sums += e;
5+
s += e;
66
}
7-
int preSum = 0;
8-
for (int i = 0; i < nums.length; ++i) {
9-
// preSum == sums - nums[i] - preSum
10-
if (preSum << 1 == sums - nums[i]) {
7+
int presum = 0;
8+
for (int i = 0; i < n; ++i) {
9+
// presum == sums - nums[i] - presum
10+
if (presum << 1 == s - nums[i]) {
1111
return i;
1212
}
13-
preSum += nums[i];
13+
presum += nums[i];
1414
}
1515
return -1;
1616
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
class Solution:
22
def pivotIndex(self, nums: List[int]) -> int:
3-
sums = sum(nums)
4-
pre_sum = 0
3+
s, presum = sum(nums), 0
54
for i, v in enumerate(nums):
6-
if (pre_sum << 1) == sums - v:
5+
if (presum << 1) == s - v:
76
return i
8-
pre_sum += v
7+
presum += v
98
return -1

0 commit comments

Comments
 (0)