Day1 三数之和

Posted 未来可期-2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day1 三数之和相关的知识,希望对你有一定的参考价值。

三数之和

class Solution:
    def threeSum(self, nums):
        n = len(nums)
        ans = []
        # 数组为空或者长度小于3直接返回
        if not nums or n<3:
            return []
        nums.sort()
        for i in range(n):
            if nums[i]>0:
                break
            # 去重
            if i>0 and nums[i]==nums[i-1]:
                continue
            # 从i+1找到R
            L = i+1
            R = n-1
            while L<R:
                if nums[i]+nums[L]+nums[R]==0:
                    ans.append([nums[i],nums[L],nums[R]])
                    while L<R and nums[L]==nums[L+1]:
                        L+=1
                    while L<R and nums[R]==nums[R-1]:
                        R-=1
                    L+=1
                    R-=1
                elif nums[i]+nums[L]+nums[R]>0:
                    R-=1
                else:
                    L+=1
        return ans

以上是关于Day1 三数之和的主要内容,如果未能解决你的问题,请参考以下文章

数组练习题:两数之和三数之和四数之和

力扣16-最接近的三数之和&力扣18-四数之和

15. 三数之和

15. 三数之和

leetcode两数之和三数之和

LeetCode1两数之和15三数之和