leetcode-15-三数之和

题目描述;

方法一:

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        res = []
        nums.sort()
        for k in range(len(nums)-2):
            if nums[k]>0:break
            if k>0 and nums[k]==nums[k-1]:continue
            i,j = k+1,len(nums)-1
            while i<j:
                s = nums[k] + nums[i] + nums[j]
                if s>0:
                    j-=1
                    if i<j and nums[j]==nums[j+1]:j-=1
                elif s<0:#注意不能是if
                    i+=1
                    if i<j and nums[i]==nums[i-1]:i+=1
                else:
                    res.append([nums[k],nums[i],nums[j]])
                    i+=1
                    j-=1
                    while i < j and nums[i] == nums[i - 1]: i += 1 
                    while i < j and nums[j] == nums[j + 1]: j -= 1 
        return res

 

posted @ 2019-07-09 14:32  oldby  阅读(237)  评论(0编辑  收藏  举报