Skip to content

Commit 33f9f5c

Browse files
authored
feat: add solutions to lc/lcof2 problems (#635)
* lcof2 No.010.Subarray Sum Equals K * lc No.0525 & lcof2 No.011.Contiguous Array
1 parent dfd0736 commit 33f9f5c

File tree

7 files changed

+151
-0
lines changed

7 files changed

+151
-0
lines changed

lcof2/剑指 Offer II 010. 和为 k 的子数组/README.md

+25
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,31 @@ func subarraySum(nums []int, k int) int {
9999
}
100100
```
101101

102+
### **C++**
103+
104+
```cpp
105+
class Solution {
106+
public:
107+
int subarraySum(vector<int>& nums, int k) {
108+
if (nums.size() < 0) return 0;
109+
110+
int presum = 0;
111+
int count = 0;
112+
unordered_map<int, int> mp;
113+
mp[0] = 1;
114+
115+
for (int right = 0; right < nums.size(); right++) {
116+
presum += nums[right];
117+
count += mp[presum - k];
118+
mp[presum]++;
119+
}
120+
121+
return count;
122+
}
123+
};
124+
```
125+
126+
102127
### **...**
103128

104129
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public:
3+
int subarraySum(vector<int>& nums, int k) {
4+
if (nums.size() < 0) return 0;
5+
6+
int presum = 0;
7+
int count = 0;
8+
unordered_map<int, int> mp;
9+
mp[0] = 1;
10+
11+
for (int right = 0; right < nums.size(); right++) {
12+
presum += nums[right];
13+
count += mp[presum - k];
14+
mp[presum]++;
15+
}
16+
17+
return count;
18+
}
19+
};

lcof2/剑指 Offer II 011. 0 和 1 个数相同的子数组/README.md

+24
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,30 @@ func max(a, b int) int {
114114
}
115115
```
116116

117+
### **C++**
118+
119+
```cpp
120+
class Solution {
121+
public:
122+
int findMaxLength(vector<int>& nums) {
123+
int presum = 0;
124+
int maxlen = 0;
125+
unordered_map<int, int> mp;
126+
mp[0] = -1;
127+
for (int i = 0; i < nums.size(); i++) {
128+
presum += nums[i] == 0? -1: 1;
129+
if (mp.find(presum) != mp.end())
130+
maxlen = max(maxlen, i - mp[presum]);
131+
else
132+
mp[presum] = i;
133+
}
134+
135+
return maxlen;
136+
}
137+
};
138+
```
139+
140+
117141
### **...**
118142

119143
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
int findMaxLength(vector<int>& nums) {
4+
int presum = 0;
5+
int maxlen = 0;
6+
unordered_map<int, int> mp;
7+
mp[0] = -1;
8+
for (int i = 0; i < nums.size(); i++) {
9+
presum += nums[i] == 0? -1: 1;
10+
if (mp.find(presum) != mp.end())
11+
maxlen = max(maxlen, i - mp[presum]);
12+
else
13+
mp[presum] = i;
14+
}
15+
16+
return maxlen;
17+
}
18+
};

solution/0500-0599/0525.Contiguous Array/README.md

+24
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,30 @@
4949

5050
```
5151

52+
### **C++**
53+
54+
```cpp
55+
class Solution {
56+
public:
57+
int findMaxLength(vector<int>& nums) {
58+
int presum = 0;
59+
int maxlen = 0;
60+
unordered_map<int, int> mp;
61+
mp[0] = -1;
62+
for (int i = 0; i < nums.size(); i++) {
63+
presum += nums[i] == 0? -1: 1;
64+
if (mp.find(presum) != mp.end())
65+
maxlen = max(maxlen, i - mp[presum]);
66+
else
67+
mp[presum] = i;
68+
}
69+
70+
return maxlen;
71+
}
72+
};
73+
```
74+
75+
5276
### **...**
5377

5478
```

solution/0500-0599/0525.Contiguous Array/README_EN.md

+23
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,29 @@ The length of the given binary array will not exceed 50,000.
6464

6565
```
6666

67+
### **C++**
68+
69+
```cpp
70+
class Solution {
71+
public:
72+
int findMaxLength(vector<int>& nums) {
73+
int presum = 0;
74+
int maxlen = 0;
75+
unordered_map<int, int> mp;
76+
mp[0] = -1;
77+
for (int i = 0; i < nums.size(); i++) {
78+
presum += nums[i] == 0? -1: 1;
79+
if (mp.find(presum) != mp.end())
80+
maxlen = max(maxlen, i - mp[presum]);
81+
else
82+
mp[presum] = i;
83+
}
84+
85+
return maxlen;
86+
}
87+
};
88+
```
89+
6790
### **...**
6891

6992
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
int findMaxLength(vector<int>& nums) {
4+
int presum = 0;
5+
int maxlen = 0;
6+
unordered_map<int, int> mp;
7+
mp[0] = -1;
8+
for (int i = 0; i < nums.size(); i++) {
9+
presum += nums[i] == 0? -1: 1;
10+
if (mp.find(presum) != mp.end())
11+
maxlen = max(maxlen, i - mp[presum]);
12+
else
13+
mp[presum] = i;
14+
}
15+
16+
return maxlen;
17+
}
18+
};

0 commit comments

Comments
 (0)