mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 04:06:51 +08:00
update 15.3sum about rust
This commit is contained in:
@ -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,21 +667,20 @@ 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 =>{
|
||||||
// 去重
|
|
||||||
while left < right && nums[right] == nums[right + 1] { right -= 1; }
|
|
||||||
} else if nums[i] + nums[left] + nums[right] < 0 {
|
|
||||||
left += 1;
|
|
||||||
// 去重
|
|
||||||
while left < right && nums[left] == nums[left - 1] { left += 1; }
|
|
||||||
} else {
|
|
||||||
result.push(vec![nums[i], nums[left], nums[right]]);
|
result.push(vec![nums[i], nums[left], nums[right]]);
|
||||||
// 去重
|
|
||||||
right -= 1;
|
|
||||||
left +=1;
|
left +=1;
|
||||||
while left < right && nums[right] == nums[right + 1] { right -= 1; }
|
right -=1;
|
||||||
while left < right && nums[left] == nums[left - 1] { left += 1; }
|
while left < right && nums[left] == nums[left - 1]{
|
||||||
|
left += 1;
|
||||||
|
}
|
||||||
|
while left < right && nums[right] == nums[right+1]{
|
||||||
|
right -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ordering::Greater => right -= 1,
|
||||||
|
Ordering::Less => left += 1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user