Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit debc8de

Browse files
committed
feat: add solutions to lc problem: No.2270
No.2270.Number of Ways to Split Array
1 parent 39f77ef commit debc8de

File tree

6 files changed

+154
-45
lines changed

6 files changed

+154
-45
lines changed

‎solution/2200-2299/2270.Number of Ways to Split Array/README.md‎

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555

5656
<!-- 这里可写通用的实现逻辑 -->
5757

58+
**方法一:前缀和**
59+
5860
<!-- tabs:start -->
5961

6062
### **Python3**
@@ -64,14 +66,13 @@
6466
```python
6567
class Solution:
6668
def waysToSplitArray(self, nums: List[int]) -> int:
67-
left, right =0, sum(nums)
68-
cnt = 0
69+
s = sum(nums)
70+
ans = t = 0
6971
for v in nums[:-1]:
70-
left += v
71-
right -= v
72-
if left >= right:
73-
cnt += 1
74-
return cnt
72+
t += v
73+
if t >= s - t:
74+
ans += 1
75+
return ans
7576
```
7677

7778
### **Java**
@@ -81,18 +82,58 @@ class Solution:
8182
```java
8283
class Solution {
8384
public int waysToSplitArray(int[] nums) {
84-
long[] pre = newlong[nums.length +1];
85-
for (int i =0; i <nums.length; i++) {
86-
pre[i +1] = pre[i] + nums[i];
85+
long s = 0;
86+
for (int v :nums) {
87+
s += v;
8788
}
88-
int cnt = 0;
89-
for (int i = 1; i < nums.length; i++) {
90-
if (pre[i] >= pre[nums.length] - pre[i]) {
91-
cnt++;
89+
int ans = 0;
90+
long t = 0;
91+
for (int i = 0; i < nums.length - 1; ++i) {
92+
t += nums[i];
93+
if (t >= s - t) {
94+
++ans;
9295
}
9396
}
94-
return cnt;
97+
return ans;
98+
}
99+
}
100+
```
101+
102+
### **C++**
103+
104+
```cpp
105+
class Solution {
106+
public:
107+
int waysToSplitArray(vector<int>& nums) {
108+
long long s = accumulate(nums.begin(), nums.end(), 0ll);
109+
long long t = 0;
110+
int ans = 0;
111+
for (int i = 0; i < nums.size() - 1; ++i)
112+
{
113+
t += nums[i];
114+
ans += t >= s - t;
115+
}
116+
return ans;
95117
}
118+
};
119+
```
120+
121+
### **Go**
122+
123+
```go
124+
func waysToSplitArray(nums []int) int {
125+
s := 0
126+
for _, v := range nums {
127+
s += v
128+
}
129+
ans, t := 0, 0
130+
for _, v := range nums[:len(nums)-1] {
131+
t += v
132+
if t >= s-t {
133+
ans++
134+
}
135+
}
136+
return ans
96137
}
97138
```
98139

‎solution/2200-2299/2270.Number of Ways to Split Array/README_EN.md‎

Lines changed: 54 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,36 +57,75 @@ There are two valid splits in nums:
5757
```python
5858
class Solution:
5959
def waysToSplitArray(self, nums: List[int]) -> int:
60-
left, right =0, sum(nums)
61-
cnt = 0
60+
s = sum(nums)
61+
ans = t = 0
6262
for v in nums[:-1]:
63-
left += v
64-
right -= v
65-
if left >= right:
66-
cnt += 1
67-
return cnt
63+
t += v
64+
if t >= s - t:
65+
ans += 1
66+
return ans
6867
```
6968

7069
### **Java**
7170

7271
```java
7372
class Solution {
7473
public int waysToSplitArray(int[] nums) {
75-
long[] pre = newlong[nums.length +1];
76-
for (int i =0; i <nums.length; i++) {
77-
pre[i +1] = pre[i] + nums[i];
74+
long s = 0;
75+
for (int v :nums) {
76+
s += v;
7877
}
79-
int cnt = 0;
80-
for (int i = 1; i < nums.length; i++) {
81-
if (pre[i] >= pre[nums.length] - pre[i]) {
82-
cnt++;
78+
int ans = 0;
79+
long t = 0;
80+
for (int i = 0; i < nums.length - 1; ++i) {
81+
t += nums[i];
82+
if (t >= s - t) {
83+
++ans;
8384
}
8485
}
85-
return cnt;
86+
return ans;
8687
}
8788
}
8889
```
8990

91+
### **C++**
92+
93+
```cpp
94+
class Solution {
95+
public:
96+
int waysToSplitArray(vector<int>& nums) {
97+
long long s = accumulate(nums.begin(), nums.end(), 0ll);
98+
long long t = 0;
99+
int ans = 0;
100+
for (int i = 0; i < nums.size() - 1; ++i)
101+
{
102+
t += nums[i];
103+
ans += t >= s - t;
104+
}
105+
return ans;
106+
}
107+
};
108+
```
109+
110+
### **Go**
111+
112+
```go
113+
func waysToSplitArray(nums []int) int {
114+
s := 0
115+
for _, v := range nums {
116+
s += v
117+
}
118+
ans, t := 0, 0
119+
for _, v := range nums[:len(nums)-1] {
120+
t += v
121+
if t >= s-t {
122+
ans++
123+
}
124+
}
125+
return ans
126+
}
127+
```
128+
90129
### **TypeScript**
91130

92131
```ts
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public:
3+
int waysToSplitArray(vector<int>& nums) {
4+
long long s = accumulate(nums.begin(), nums.end(), 0ll);
5+
long long t = 0;
6+
int ans = 0;
7+
for (int i = 0; i < nums.size() - 1; ++i)
8+
{
9+
t += nums[i];
10+
ans += t >= s - t;
11+
}
12+
return ans;
13+
}
14+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
func waysToSplitArray(nums []int) int {
2+
s := 0
3+
for _, v := range nums {
4+
s += v
5+
}
6+
ans, t := 0, 0
7+
for _, v := range nums[:len(nums)-1] {
8+
t += v
9+
if t >= s-t {
10+
ans++
11+
}
12+
}
13+
return ans
14+
}
Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
class Solution {
22
public int waysToSplitArray(int[] nums) {
3-
long[] pre = newlong[nums.length + 1];
4-
for (int i = 0; i < nums.length; i++) {
5-
pre[i + 1] = pre[i] + nums[i];
3+
longs = 0;
4+
for (int v : nums) {
5+
s += v;
66
}
7-
int cnt = 0;
8-
for (int i = 1; i < nums.length; i++) {
9-
if (pre[i] >= pre[nums.length] - pre[i]) {
10-
cnt++;
7+
int ans = 0;
8+
long t = 0;
9+
for (int i = 0; i < nums.length - 1; ++i) {
10+
t += nums[i];
11+
if (t >= s - t) {
12+
++ans;
1113
}
1214
}
13-
return cnt;
15+
return ans;
1416
}
1517
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
class Solution:
22
def waysToSplitArray(self, nums: List[int]) -> int:
3-
left, right=0, sum(nums)
4-
cnt = 0
3+
s= sum(nums)
4+
ans=t = 0
55
for v in nums[:-1]:
6-
left += v
7-
right -= v
8-
if left >= right:
9-
cnt += 1
10-
return cnt
6+
t += v
7+
if t >= s - t:
8+
ans += 1
9+
return ans

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /