leetcode刷题十一

Posted hhh江月

tags:

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

leetcode刷题十一

题目叙述

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

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

题目解答

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        source = nums
        l = len(nums)
        if l < 3:
            return []
        nums.sort()
        if nums[0] > 0:
            return []
        if nums[l - 1] < 0:
            return []
        big = []
        small = []
        out = []
        for i in range(l):
            if nums[i] < 0:
                small.append(nums[i])
            if nums[i] > 0:
                big.append(nums[i])
        for i in small:
            nums.remove(i)
        for i in big:
            nums.remove(i)
        if len(nums) >= 3:
            out.append([0, 0, 0])
        if len(small) == 0 or len(big) == 0:
            return out
        # print(source, nums)
        if 0 in nums:
            for i in small:
                if -i in big:
                    out.append([i, 0, -i])
            for i in small:
                for j in big:
                    small.remove(i)
                    big.remove(j)
                    if - (i + j) in small or - (i + j) in big:
                        out.append([i, -(i+j), j])
                    small.append(i)
                    small.sort()
                    big.append(j)
                    big.sort()
        else:
            for i in small:
                for j in big:
                    small.remove(i)
                    big.remove(j)
                    if - (i + j) in small or - (i + j) in big:
                        out.append([i, -(i+j), j])
                    small.append(i)
                    small.sort()
                    big.append(j)
                    big.sort()
        res = out
        out = []
        for i in res:
            i.sort()
            if i in out:
                continue
            else:
                out.append(i)
        return out


                    
        


    



以上是关于leetcode刷题十一的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题十

leetcode刷题十九

leetcode刷题十二

leetcode刷题十四

LeetCode开心刷题十三天——24

leetcode刷题十七