Merge pull request #1707 from Jack-Zhang-1314/patch-10

update 15.3sum about rust
This commit is contained in:
程序员Carl
2022-10-28 09:48:48 +08:00
committed by GitHub

View File

@ -655,7 +655,7 @@ impl Solution {
```Rust ```Rust
// 双指针法 // 双指针法
use std::collections::HashSet; use std::cmp::Ordering;
impl Solution { impl Solution {
pub fn three_sum(nums: Vec<i32>) -> Vec<Vec<i32>> { pub fn three_sum(nums: Vec<i32>) -> Vec<Vec<i32>> {
let mut result: Vec<Vec<i32>> = Vec::new(); let mut result: Vec<Vec<i32>> = Vec::new();
@ -667,22 +667,21 @@ impl Solution {
if i > 0 && nums[i] == nums[i - 1] { continue; } if i > 0 && 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[i] + nums[left] + nums[right] > 0 { match (nums[i] + nums[left] + nums[right]).cmp(&0){
right -= 1; Ordering::Equal =>{
// 去重 result.push(vec![nums[i], nums[left], nums[right]]);
while left < right && nums[right] == nums[right + 1] { right -= 1; } left +=1;
} else if nums[i] + nums[left] + nums[right] < 0 { 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[i], nums[left], nums[right]]); right -= 1;
// 去重 }
right -= 1; }
left += 1; Ordering::Greater => right -= 1,
while left < right && nums[right] == nums[right + 1] { right -= 1; } Ordering::Less => left += 1,
while left < right && nums[left] == nums[left - 1] { left += 1; } }
}
} }
} }
result result