Skip to content

Commit bf6ea02

Browse files
authored
feat: add python solution to lc problem: No.2031 (#2131)
No.2031.Count Subarrays With More Ones Than Zeros
1 parent b218c09 commit bf6ea02

File tree

4 files changed

+40
-6
lines changed

4 files changed

+40
-6
lines changed

solution/2000-2099/2031.Count Subarrays With More Ones Than Zeros/README.md

+19-2
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,30 @@ class Solution:
101101
mod = 10**9 + 7
102102
ans = s = 0
103103
for x in nums:
104-
s += 1 if x else -1
104+
s += x or -1
105105
ans += tree.query(s - 1 + base)
106106
ans %= mod
107107
tree.update(s + base, 1)
108108
return ans
109109
```
110110

111+
```python
112+
from sortedcontainers import SortedList
113+
114+
115+
class Solution:
116+
def subarraysWithMoreZerosThanOnes(self, nums: List[int]) -> int:
117+
sl = SortedList([0])
118+
mod = 10**9 + 7
119+
ans = s = 0
120+
for x in nums:
121+
s += x or -1
122+
ans += sl.bisect_left(s)
123+
ans %= mod
124+
sl.add(s)
125+
return ans
126+
```
127+
111128
### **Java**
112129

113130
<!-- 这里可写当前语言的特殊实现逻辑 -->
@@ -286,7 +303,7 @@ function subarraysWithMoreZerosThanOnes(nums: number[]): number {
286303
let ans: number = 0;
287304
let s: number = 0;
288305
for (const x of nums) {
289-
s += x === 0 ? -1 : 1;
306+
s += x || -1;
290307
ans += tree.query(s - 1 + base);
291308
ans %= mod;
292309
tree.update(s + base, 1);

solution/2000-2099/2031.Count Subarrays With More Ones Than Zeros/README_EN.md

+19-2
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,30 @@ class Solution:
9696
mod = 10**9 + 7
9797
ans = s = 0
9898
for x in nums:
99-
s += 1 if x else -1
99+
s += x or -1
100100
ans += tree.query(s - 1 + base)
101101
ans %= mod
102102
tree.update(s + base, 1)
103103
return ans
104104
```
105105

106+
```python
107+
from sortedcontainers import SortedList
108+
109+
110+
class Solution:
111+
def subarraysWithMoreZerosThanOnes(self, nums: List[int]) -> int:
112+
sl = SortedList([0])
113+
mod = 10**9 + 7
114+
ans = s = 0
115+
for x in nums:
116+
s += x or -1
117+
ans += sl.bisect_left(s)
118+
ans %= mod
119+
sl.add(s)
120+
return ans
121+
```
122+
106123
### **Java**
107124

108125
```java
@@ -279,7 +296,7 @@ function subarraysWithMoreZerosThanOnes(nums: number[]): number {
279296
let ans: number = 0;
280297
let s: number = 0;
281298
for (const x of nums) {
282-
s += x === 0 ? -1 : 1;
299+
s += x || -1;
283300
ans += tree.query(s - 1 + base);
284301
ans %= mod;
285302
tree.update(s + base, 1);

solution/2000-2099/2031.Count Subarrays With More Ones Than Zeros/Solution.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def subarraysWithMoreZerosThanOnes(self, nums: List[int]) -> int:
2727
mod = 10**9 + 7
2828
ans = s = 0
2929
for x in nums:
30-
s += 1 if x else -1
30+
s += x or -1
3131
ans += tree.query(s - 1 + base)
3232
ans %= mod
3333
tree.update(s + base, 1)

solution/2000-2099/2031.Count Subarrays With More Ones Than Zeros/Solution.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function subarraysWithMoreZerosThanOnes(nums: number[]): number {
3131
let ans: number = 0;
3232
let s: number = 0;
3333
for (const x of nums) {
34-
s += x === 0 ? -1 : 1;
34+
s += x || -1;
3535
ans += tree.query(s - 1 + base);
3636
ans %= mod;
3737
tree.update(s + base, 1);

0 commit comments

Comments
 (0)