Skip to content

Commit bfb2a1e

Browse files
Merge pull request #3056 from emanuele-em/patch-1
Update 0347-top-k-frequent-elements.rs
2 parents ae16797 + 55fb6f8 commit bfb2a1e

File tree

1 file changed

+7
-9
lines changed

1 file changed

+7
-9
lines changed

Diff for: rust/0347-top-k-frequent-elements.rs

+7-9
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,18 @@ impl Solution {
66
let mut map: HashMap<i32, i32> = HashMap::new();
77

88
for n in nums{
9-
*map.entry(n).or_default() +=1;
9+
*map.entry(n).and_modify(|val| *val+=1).or_default();
1010
}
1111

1212
let mut freq: Vec<(i32, i32)> = map.into_iter().collect();
1313

14-
let res = if k == freq.len() as i32{
15-
&freq
16-
}else{
17-
quick_select(&mut freq, k)
14+
let res = match (k as usize).cmp(&freq.len()){
15+
Ordering::Equal => &freq,
16+
_ => quick_select(&mut freq, k),
1817
};
1918

2019
res.into_iter()
21-
.map(|&(n, _)| n)
20+
.map(|&n| n.0)
2221
.collect()
2322
}
2423
}
@@ -29,12 +28,11 @@ pub fn quick_select(slice: &mut [(i32, i32)], k: i32) -> &[(i32, i32)]{
2928
for index in 1..slice.len(){
3029
if slice[index].1 >= slice[pivot].1{
3130
slice.swap(index, j);
32-
j+=1;
3331
}else{
3432
slice.swap(index, i);
3533
i+=1;
36-
j+=1;
3734
}
35+
j+=1;
3836
}
3937

4038
slice.swap(pivot, i - 1);
@@ -47,4 +45,4 @@ pub fn quick_select(slice: &mut [(i32, i32)], k: i32) -> &[(i32, i32)]{
4745
Ordering::Greater => quick_select(&mut slice[pivot + 1..j], k),
4846
Ordering::Equal => &slice[pivot..j],
4947
}
50-
}
48+
}

0 commit comments

Comments
 (0)