3Sum LeetCode solution in Rust
1use std::collections::HashSet;23impl Solution {4pub fn three_sum(nums: Vec<i32>) -> Vec<Vec<i32>> {5let mut in_order_nums = nums.clone();6in_order_nums.sort();7let m = &in_order_nums[..];89let mut res: HashSet<Vec<i32>> = HashSet::new();10for i in 0..in_order_nums.len() - 2 {11let n1 = m[i];12let mut j = i + 1;13let mut k = in_order_nums.len() - 1;1415while j < k {16let n2 = m[j];17let n3 = m[k];18let sum = n1 + n2 + n3;19if sum < 0 {20j += 1;21} else if sum > 0 {22k -= 1;23} else {24res.insert(vec![n1, n2, n3]);25while j < k && m[j] == n2 {26j += 1;27}28while j < k && m[k] == n3 {29k -= 1;30}31}32}33}3435res.into_iter().collect::<Vec<Vec<i32>>>()36}37}