15三数之和 #leetcode

Posted 齐天大圣打妖怪

tags:

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

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

注意:答案中不可以包含重复的三元组。

例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],

满足要求的三元组集合为:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

lass Solution(object):
def threeSum(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""

    nums.sort()
    res =[]
    i = 0
    for i in range(len(nums)):
        if i == 0 or nums[i]>nums[i-1]:
            l = i+1
            r = len(nums)-1
            while l < r:
                s = nums[i] + nums[l] +nums[r]
                if s ==0:
                    res.append([nums[i],nums[l],nums[r]])
                    l +=1
                    r -=1
                    while l < r and nums[l] == nums[l-1]:
                        l += 1
                    while r > l and nums[r] == nums[r+1]:
                        r -= 1
                elif s>0:
                    r -=1
                else :
                    l +=1
    return res

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

LeetCode15.三数之和(C++,Python)

LeetCode15.三数之和(C++,Python)

leetcode(15)三数之和+去重

LeetCode1两数之和15三数之和

LeetCode1两数之和15三数之和

LeetCode刷题15-简单-三数之和