mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Merge pull request #1708 from Jack-Zhang-1314/patch-11
update 18.4sum about rust
This commit is contained in:
@ -527,6 +527,7 @@ public class Solution
|
||||
|
||||
Rust:
|
||||
```Rust
|
||||
use std::cmp::Ordering;
|
||||
impl Solution {
|
||||
pub fn four_sum(nums: Vec<i32>, target: i32) -> Vec<Vec<i32>> {
|
||||
let mut result: Vec<Vec<i32>> = Vec::new();
|
||||
@ -545,22 +546,25 @@ impl Solution {
|
||||
if i > k + 1 && nums[i] == nums[i - 1] { continue; }
|
||||
let (mut left, mut right) = (i + 1, len - 1);
|
||||
while left < right {
|
||||
if nums[k] + nums[i] > target - (nums[left] + nums[right]) {
|
||||
right -= 1;
|
||||
// 去重
|
||||
while left < right && nums[right] == nums[right + 1] { right -= 1; }
|
||||
} else if nums[k] + nums[i] < target - (nums[left] + nums[right]) {
|
||||
left += 1;
|
||||
// 去重
|
||||
while left < right && nums[left] == nums[left - 1] { left += 1; }
|
||||
} else {
|
||||
result.push(vec![nums[k], nums[i], nums[left], nums[right]]);
|
||||
// 去重
|
||||
while left < right && nums[right] == nums[right - 1] { right -= 1; }
|
||||
while left < right && nums[left] == nums[left + 1] { left += 1; }
|
||||
left += 1;
|
||||
right -= 1;
|
||||
}
|
||||
match (nums[k] + nums[i] + nums[left] + nums[right]).cmp(&target){
|
||||
Ordering::Equal => {
|
||||
result.push(vec![nums[k], nums[i], nums[left], nums[right]]);
|
||||
left += 1;
|
||||
right -= 1;
|
||||
while left < right && nums[left] == nums[left - 1]{
|
||||
left += 1;
|
||||
}
|
||||
while left < right && nums[right] == nums[right + 1]{
|
||||
right -= 1;
|
||||
}
|
||||
}
|
||||
Ordering::Less => {
|
||||
left +=1;
|
||||
},
|
||||
Ordering::Greater => {
|
||||
right -= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user