File tree 6 files changed +142
-33
lines changed
solution/0700-0799/0724.Find Pivot Index
6 files changed +142
-33
lines changed Original file line number Diff line number Diff line change 60
60
61
61
<!-- 这里可写通用的实现逻辑 -->
62
62
63
+ 前缀和。
64
+
63
65
<!-- tabs:start -->
64
66
65
67
### ** Python3**
69
71
``` python
70
72
class Solution :
71
73
def pivotIndex (self , nums : List[int ]) -> int :
72
- sums = sum (nums)
73
- pre_sum = 0
74
+ s, presum = sum (nums), 0
74
75
for i, v in enumerate (nums):
75
- if (pre_sum << 1 ) == sums - v:
76
+ if (presum << 1 ) == s - v:
76
77
return i
77
- pre_sum += v
78
+ presum += v
78
79
return - 1
79
80
```
80
81
@@ -85,20 +86,60 @@ class Solution:
85
86
``` java
86
87
class Solution {
87
88
public int pivotIndex (int [] nums ) {
88
- int sums = 0 ;
89
+ int n = nums . length, s = 0 ;
89
90
for (int e : nums) {
90
- sums += e;
91
+ s += e;
91
92
}
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]) {
96
97
return i;
97
98
}
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] ;
99
121
}
100
122
return -1;
101
123
}
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
102
143
}
103
144
```
104
145
Original file line number Diff line number Diff line change @@ -61,12 +61,11 @@ Right sum = nums[1] + nums[2] = 1 + -1 = 0
61
61
``` python
62
62
class Solution :
63
63
def pivotIndex (self , nums : List[int ]) -> int :
64
- sums = sum (nums)
65
- pre_sum = 0
64
+ s, presum = sum (nums), 0
66
65
for i, v in enumerate (nums):
67
- if (pre_sum << 1 ) == sums - v:
66
+ if (presum << 1 ) == s - v:
68
67
return i
69
- pre_sum += v
68
+ presum += v
70
69
return - 1
71
70
```
72
71
@@ -75,23 +74,63 @@ class Solution:
75
74
``` java
76
75
class Solution {
77
76
public int pivotIndex (int [] nums ) {
78
- int sums = 0 ;
77
+ int n = nums . length, s = 0 ;
79
78
for (int e : nums) {
80
- sums += e;
79
+ s += e;
81
80
}
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]) {
86
85
return i;
87
86
}
88
- preSum += nums[i];
87
+ presum += nums[i];
89
88
}
90
89
return - 1 ;
91
90
}
92
91
}
93
92
```
94
93
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
+
95
134
### ** ...**
96
135
97
136
```
Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public int pivotIndex (int [] nums ) {
3
- int sums = 0 ;
3
+ int n = nums . length , s = 0 ;
4
4
for (int e : nums ) {
5
- sums += e ;
5
+ s += e ;
6
6
}
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 ]) {
11
11
return i ;
12
12
}
13
- preSum += nums [i ];
13
+ presum += nums [i ];
14
14
}
15
15
return -1 ;
16
16
}
Original file line number Diff line number Diff line change 1
1
class Solution :
2
2
def pivotIndex (self , nums : List [int ]) -> int :
3
- sums = sum (nums )
4
- pre_sum = 0
3
+ s , presum = sum (nums ), 0
5
4
for i , v in enumerate (nums ):
6
- if (pre_sum << 1 ) == sums - v :
5
+ if (presum << 1 ) == s - v :
7
6
return i
8
- pre_sum += v
7
+ presum += v
9
8
return - 1
You can’t perform that action at this time.
0 commit comments