LeetCode15.三数之和
题目
代码实现
public class Solution
{
public IList<IList<int>> ThreeSum(int[] nums)
{
IList<IList<int>>result = new List<IList<int>>();
if (nums.Length < 3)
return result;
nums=nums .OrderBy (a=>a ).ToArray ();
for (int i = 0 ; i < nums.Length-2 ; i++)
{
if (i > 0 && nums[i] == nums[i-1])
continue;
if (nums[i] > 0)
return result;
int l=i+1;
int r=nums.Length-1;
while (l < r)
{
if (nums[i] + nums[l] + nums[r] == 0)
{
result.Add(newList<int>({nums[i],nums[l],nums[r]});
while (l <r && nums[l] == nums[l+1])
l++;
while(l<r&&nums[r]==nums[r-1])
r--;
l++;
r--;
}
else if (l < r && nums[i] + nums[l] + nums[r] > 0)
r--;
else if (l < r && nums[i] + nums[l] + nums[r] < 0)
l++;
}
}
return result;
}
}