update 18.4sum about rust

This commit is contained in:
fw_qaq
2022-10-22 21:55:08 +08:00
committed by GitHub
parent e48ed8a586
commit 53793b70f9

View File

@ -527,6 +527,7 @@ public class Solution
Rust: Rust:
```Rust ```Rust
use std::cmp::Ordering;
impl Solution { impl Solution {
pub fn four_sum(nums: Vec<i32>, target: i32) -> Vec<Vec<i32>> { pub fn four_sum(nums: Vec<i32>, target: i32) -> Vec<Vec<i32>> {
let mut result: Vec<Vec<i32>> = Vec::new(); let mut result: Vec<Vec<i32>> = Vec::new();
@ -545,22 +546,25 @@ impl Solution {
if i > k + 1 && nums[i] == nums[i - 1] { continue; } if i > k + 1 && nums[i] == nums[i - 1] { continue; }
let (mut left, mut right) = (i + 1, len - 1); let (mut left, mut right) = (i + 1, len - 1);
while left < right { while left < right {
if nums[k] + nums[i] > target - (nums[left] + nums[right]) { match (nums[k] + nums[i] + nums[left] + nums[right]).cmp(&target){
right -= 1; Ordering::Equal => {
// 去重 result.push(vec![nums[k], nums[i], nums[left], nums[right]]);
while left < right && nums[right] == nums[right + 1] { right -= 1; } left += 1;
} else if nums[k] + nums[i] < target - (nums[left] + nums[right]) { right -= 1;
left += 1; while left < right && nums[left] == nums[left - 1]{
// 去重 left += 1;
while left < right && nums[left] == nums[left - 1] { left += 1; } }
} else { while left < right && nums[right] == nums[right + 1]{
result.push(vec![nums[k], nums[i], nums[left], nums[right]]); right -= 1;
// 去重 }
while left < right && nums[right] == nums[right - 1] { right -= 1; } }
while left < right && nums[left] == nums[left + 1] { left += 1; } Ordering::Less => {
left += 1; left +=1;
right -= 1; },
} Ordering::Greater => {
right -= 1;
}
}
} }
} }
} }