LeetCode Python - 15.三数之和


题目

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

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

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

提示:

  • 3 <= nums.length <= 3000
  • -105 <= nums[i] <= 105

答案

class Solution(object):
    def threeSum(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        res, res_set = [], set()
        nums.sort()
        for i in range(len(nums) - 2):
            l, r = i + 1, len(nums) - 1
            while l < r:
                sm = nums[i] + nums[l] + nums[r] 
                if sm < 0: l += 1
                elif sm > 0: r -= 1
                elif (nums[i], nums[l], nums[r]) not in res_set: 
                    res.append([nums[i], nums[l], nums[r]])
                    res_set.add((nums[i], nums[l], nums[r])) 
                else: l, r = l + 1, r - 1
        return res

运行结果

在这里插入图片描述
在这里插入图片描述

相关推荐

  1. 15. 之和

    2024-02-17 11:06:02       58 阅读
  2. 15.之和

    2024-02-17 11:06:02       41 阅读
  3. 15. 之和

    2024-02-17 11:06:02       30 阅读
  4. 15. 之和

    2024-02-17 11:06:02       30 阅读
  5. LeetCode-15. 之和

    2024-02-17 11:06:02       64 阅读
  6. [LeetCode] 15. 之和

    2024-02-17 11:06:02       63 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-17 11:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-17 11:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-17 11:06:02       87 阅读
  4. Python语言-面向对象

    2024-02-17 11:06:02       96 阅读

热门阅读

  1. rtt设备io框架面向对象学习-uart设备

    2024-02-17 11:06:02       49 阅读
  2. Linux命令-bzcat命令(解压缩指定的.bz2文件)

    2024-02-17 11:06:02       45 阅读
  3. 索引失效场景

    2024-02-17 11:06:02       45 阅读
  4. 这是 30 年来创办公司的最佳时机。

    2024-02-17 11:06:02       51 阅读
  5. Grafana入门:从0开始打造动态仪表板

    2024-02-17 11:06:02       51 阅读
  6. 2.16C语言学习

    2024-02-17 11:06:02       51 阅读
  7. JDK 8 安装及环境配置

    2024-02-17 11:06:02       53 阅读