3Sum LeetCode solution in Rust

1
use std::collections::HashSet;
2

3
impl Solution {
4
pub fn three_sum(nums: Vec<i32>) -> Vec<Vec<i32>> {
5
let mut in_order_nums = nums.clone();
6
in_order_nums.sort();
7
let m = &in_order_nums[..];
8

9
let mut res: HashSet<Vec<i32>> = HashSet::new();
10
for i in 0..in_order_nums.len() - 2 {
11
let n1 = m[i];
12
let mut j = i + 1;
13
let mut k = in_order_nums.len() - 1;
14

15
while j < k {
16
let n2 = m[j];
17
let n3 = m[k];
18
let sum = n1 + n2 + n3;
19
if sum < 0 {
20
j += 1;
21
} else if sum > 0 {
22
k -= 1;
23
} else {
24
res.insert(vec![n1, n2, n3]);
25
while j < k && m[j] == n2 {
26
j += 1;
27
}
28
while j < k && m[k] == n3 {
29
k -= 1;
30
}
31
}
32
}
33
}
34

35
res.into_iter().collect::<Vec<Vec<i32>>>()
36
}
37
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0