Skip to content

Commit 39148bc

Browse files
committed
feat: add rust solution to lc problem: No.0560
No.0560.Subarray Sum Equals K
1 parent 5f13350 commit 39148bc

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

solution/0500-0599/0560.Subarray Sum Equals K/README.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,49 @@ func subarraySum(nums []int, k int) int {
128128
}
129129
```
130130

131+
### **Rust**
132+
133+
```rust
134+
impl Solution {
135+
pub fn subarray_sum(mut nums: Vec<i32>, k: i32) -> i32 {
136+
let n = nums.len();
137+
let mut count = 0;
138+
for i in 0..n {
139+
let num = nums[i];
140+
if num == k {
141+
count += 1;
142+
}
143+
for j in 0..i {
144+
nums[j] += num;
145+
if nums[j] == k {
146+
count += 1;
147+
}
148+
}
149+
}
150+
count
151+
}
152+
}
153+
```
154+
155+
```rust
156+
use std::collections::HashMap;
157+
158+
impl Solution {
159+
pub fn subarray_sum(nums: Vec<i32>, k: i32) -> i32 {
160+
let mut res = 0;
161+
let mut sum = 0;
162+
let mut map = HashMap::new();
163+
map.insert(0, 1);
164+
nums.iter().for_each(|num| {
165+
sum += num;
166+
res += map.get(&(sum - k)).unwrap_or(&0);
167+
map.insert(sum, map.get(&sum).unwrap_or(&0) + 1);
168+
});
169+
res
170+
}
171+
}
172+
```
173+
131174
### **...**
132175

133176
```

solution/0500-0599/0560.Subarray Sum Equals K/README_EN.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,49 @@ func subarraySum(nums []int, k int) int {
111111
}
112112
```
113113

114+
### **Rust**
115+
116+
```rust
117+
impl Solution {
118+
pub fn subarray_sum(mut nums: Vec<i32>, k: i32) -> i32 {
119+
let n = nums.len();
120+
let mut count = 0;
121+
for i in 0..n {
122+
let num = nums[i];
123+
if num == k {
124+
count += 1;
125+
}
126+
for j in 0..i {
127+
nums[j] += num;
128+
if nums[j] == k {
129+
count += 1;
130+
}
131+
}
132+
}
133+
count
134+
}
135+
}
136+
```
137+
138+
```rust
139+
use std::collections::HashMap;
140+
141+
impl Solution {
142+
pub fn subarray_sum(nums: Vec<i32>, k: i32) -> i32 {
143+
let mut res = 0;
144+
let mut sum = 0;
145+
let mut map = HashMap::new();
146+
map.insert(0, 1);
147+
nums.iter().for_each(|num| {
148+
sum += num;
149+
res += map.get(&(sum - k)).unwrap_or(&0);
150+
map.insert(sum, map.get(&sum).unwrap_or(&0) + 1);
151+
});
152+
res
153+
}
154+
}
155+
```
156+
114157
### **...**
115158

116159
```
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
pub fn subarray_sum(nums: Vec<i32>, k: i32) -> i32 {
5+
let mut res = 0;
6+
let mut sum = 0;
7+
let mut map = HashMap::new();
8+
map.insert(0, 1);
9+
nums.iter().for_each(|num| {
10+
sum += num;
11+
res += map.get(&(sum - k)).unwrap_or(&0);
12+
map.insert(sum, map.get(&sum).unwrap_or(&0) + 1);
13+
});
14+
res
15+
}
16+
}

0 commit comments

Comments
 (0)