Skip to content

Commit dacb2d0

Browse files
authored
feat: add rust solution to lc problem: No.2845 (#4371)
1 parent 3c1f76c commit dacb2d0

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed

solution/2800-2899/2845.Count of Interesting Subarrays/README.md

+29
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,35 @@ function countInterestingSubarrays(nums: number[], modulo: number, k: number): n
208208
}
209209
```
210210

211+
#### Rust
212+
213+
```rust
214+
use std::collections::HashMap;
215+
216+
impl Solution {
217+
pub fn count_interesting_subarrays(nums: Vec<i32>, modulo: i32, k: i32) -> i64 {
218+
let mut arr: Vec<i32> = nums
219+
.iter()
220+
.map(|&x| if x % modulo == k { 1 } else { 0 })
221+
.collect();
222+
let mut cnt: HashMap<i32, i64> = HashMap::new();
223+
cnt.insert(0, 1);
224+
225+
let mut ans: i64 = 0;
226+
let mut s: i32 = 0;
227+
228+
for x in arr {
229+
s += x;
230+
let key = (s - k).rem_euclid(modulo);
231+
ans += *cnt.get(&key).unwrap_or(&0);
232+
*cnt.entry(s % modulo).or_insert(0) += 1;
233+
}
234+
235+
ans
236+
}
237+
}
238+
```
239+
211240
<!-- tabs:end -->
212241

213242
<!-- solution:end -->

solution/2800-2899/2845.Count of Interesting Subarrays/README_EN.md

+29
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,35 @@ function countInterestingSubarrays(nums: number[], modulo: number, k: number): n
206206
}
207207
```
208208

209+
#### Rust
210+
211+
```rust
212+
use std::collections::HashMap;
213+
214+
impl Solution {
215+
pub fn count_interesting_subarrays(nums: Vec<i32>, modulo: i32, k: i32) -> i64 {
216+
let mut arr: Vec<i32> = nums
217+
.iter()
218+
.map(|&x| if x % modulo == k { 1 } else { 0 })
219+
.collect();
220+
let mut cnt: HashMap<i32, i64> = HashMap::new();
221+
cnt.insert(0, 1);
222+
223+
let mut ans: i64 = 0;
224+
let mut s: i32 = 0;
225+
226+
for x in arr {
227+
s += x;
228+
let key = (s - k).rem_euclid(modulo);
229+
ans += *cnt.get(&key).unwrap_or(&0);
230+
*cnt.entry(s % modulo).or_insert(0) += 1;
231+
}
232+
233+
ans
234+
}
235+
}
236+
```
237+
209238
<!-- tabs:end -->
210239

211240
<!-- solution:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
pub fn count_interesting_subarrays(nums: Vec<i32>, modulo: i32, k: i32) -> i64 {
5+
let mut arr: Vec<i32> = nums
6+
.iter()
7+
.map(|&x| if x % modulo == k { 1 } else { 0 })
8+
.collect();
9+
let mut cnt: HashMap<i32, i64> = HashMap::new();
10+
cnt.insert(0, 1);
11+
12+
let mut ans: i64 = 0;
13+
let mut s: i32 = 0;
14+
15+
for x in arr {
16+
s += x;
17+
let key = (s - k).rem_euclid(modulo);
18+
ans += *cnt.get(&key).unwrap_or(&0);
19+
*cnt.entry(s % modulo).or_insert(0) += 1;
20+
}
21+
22+
ans
23+
}
24+
}

0 commit comments

Comments
 (0)