3Sum Closest LeetCode solution in Rust
1impl Solution {2pub fn three_sum_closest(mut nums: Vec<i32>, target: i32) -> i32 {3// [1] sorting would allow us to use two pointers4nums.sort_unstable();5let mut best_diff: i32 = i32::MAX;67// [2] use two pointers 'l' and 'r' that converge towards8// one another for each first element 'i'9for i in 0..nums.len() {10let mut l = i + 1;11let mut r = nums.len() - 1;12let pre_diff = nums[i] - target;13while l < r {14let diff = pre_diff + nums[l] + nums[r];15if diff.abs() < best_diff.abs() {16best_diff = diff;17}18match diff.signum() {191 => r -= 1,20-1 => l += 1,210 => return target,22_ => unreachable!(),23}24}25}2627return target + best_diff;28}29}