Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note:
- Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
- The solution set must not contain duplicate triplets.
For example, given array S = {-1 0 1 2 -1 -4}, A solution set is: (-1, 0, 1) (-1, -1, 2)
fn main() {
println!("Hello, world!");
let mut xs:[i32;6]=[0,1,-1,2,0,-2];
let result = three1(xs);
println!("{:?}",result);
}
fn three1(mut arr:[i32;6])->Vec<Vec<i32>>{
let mut ret_vec:Vec<Vec<i32>> = Vec::new();
arr.sort();
let len=arr.len();
let mut left=0;
let mut right=0;
let mut temp:i32=0;
for i in 0..len {
if i>0 && arr[i]==arr[i-1]{
continue;
}
left = i+1;
right = len -1;
while left<right {
temp=arr[i]+arr[left]+arr[right];
println!("temp:{}",temp);
if temp == 0 {
let mut data_vec:Vec<i32> = Vec::new();
let leftnum:i32 = arr[left];
let rightnum:i32 = arr[right];
data_vec.push(arr[i]);
data_vec.push(leftnum);
data_vec.push(rightnum);
ret_vec.push(data_vec);
if left<right && arr[left]==leftnum {left+=1};
if left<right && arr[right]==rightnum{right-=1}
}else if temp>0 {
right -=1 ;
}else{
left +=1;
}
}
println!("{}",arr[i]);
}
ret_vec
}