题目:

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

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

示例:

给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:
[[-1, 0, 1],[-1, -1, 2]
]

代码(排序+双指针):

class Solution:def threeSum(self, nums):if len(nums) < 3:                 # 若数组长度 < 3,直接返回空return []nums = sorted(nums)               # 排序re = []                           # 结果变量for i in range(len(nums)):                  # 遍历if nums[i] > 0:                         # 若 nums[i] > 0,则没有数字之和为0,直接返回rereturn re if i > 0 and nums[i] == nums[i-1]:      # 排除重复数组continueL = i + 1                               # 左指针R = len(nums) - 1                       # 右指针while L < R:                                      # 遍历temp = nums[i] + nums[L] + nums[R]            # 三数之和if temp == 0:                                 # 若temp = 0re.append([nums[i],nums[L],nums[R]])      # 添加到结果列表中while L < R and nums[L] == nums[L+1]:     # 避免左指针下一个数字重复,跳过L = L + 1while L < R and nums[R] == nums[R-1]:     # 避免右指针下一个数字重复,跳过R = R - 1L = L + 1                       # 左指针右移,遍历R = R - 1                       # 右指针左移,遍历elif temp > 0:                                # 若temp > 0R = R - 1                                 # 则应该让三数之和小一些,故右指针左移else:                                         L = L + 1                                 # 反之,应该让三数之和大一些,故左指针右移return re

15、三数之和(python)相关推荐

  1. Leetcode python《热题 HOT 100》15. 三数之和

    Leetcode python 之 <热题 HOT 100>:https://leetcode-cn.com/problemset/hot-100/ 15. 三数之和 给定一个包含 n 个 ...

  2. 代码随想录算法训练营第四期第六天| 454.四数相加II、383.赎金信、15.三数之和、18. 四数之和

    454.四数相加II 给你四个整数数组nums1.nums2.nums3和nums4 ,数组长度都是n ,请你计算有多少个元组(i, j, k, l)能满足: 0 <= i, j, k, l & ...

  3. 15. 三数之和 golang

    15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意:答案中不 ...

  4. LeetCode 15. 三数之和(3Sum)

    15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...

  5. [双指针|模拟] leetcode 15 三数之和

    [双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...

  6. Suzy找到实习了吗Day 7 | 哈希表结束啦 454. 四数相加 II,383. 赎金信,15. 三数之和,18. 四数之和

    454. 四数相加 II(dict hash) 题目 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足 ...

  7. 代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和

    代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体 ...

  8. 代码随想录算法训练营第07天 | LeetCode 454.四数相加2,383. 赎金信,15. 三数之和,18. 四数之和,总结

    LeetCode [454. 四数相加 II] 题目:给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足 ...

  9. 15 三数之和(2021-07-09)

    15. 三数之和 链接:https://leetcode-cn.com/problems/3sum/ 题目描述见链接内容. 解法1:三重循环+HasH去重 想不到什么好的思路,于是就笨方法开干,用三种 ...

  10. 【LeetCode 算法】15.三数之和

    15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...

最新文章

  1. ubuntu部署eclipse兼容性问题
  2. oracle基础琐碎总结-----Where和Having的区别与联系
  3. Axure下拉框级联操作
  4. 【云和恩墨大讲堂】从执行计划洞察ORACLE优化器的“小聪明”
  5. Windows 8 Platform (一) 台式机、笔记本电脑、平板电脑和智能手机
  6. CognitiveJ一个Java的人脸图像识别开源分析库
  7. AlterID.exe 报错问题
  8. 利用navicat 进行 mysql建表语句转oracle建表语句
  9. 解决Untracked Files Prevent Checkout问题
  10. Kata Containers用例
  11. Error (14566):The Fitter cannot place 1 periphery component(s) xxx (1 fractional PLL(s)).
  12. (纪录片)光的故事 BBC Light Fantastic (2004)
  13. vue和php前后端分离
  14. 前端开发面试问题及答案收录
  15. 工业交换机的内部组成是什么?
  16. python3将文本内容生成词云
  17. 使用皮皮影院搭建电影展
  18. 调整图像亮度之 线性拉伸 (2) 百分比截断拉伸
  19. VS 使用自带的.NET Reflector单步调试编译好的程序集(反编译),以及相关其他反编译程序介绍
  20. 用这个方法,苹果官网居然比二手市场还便宜,最近剁手的注意了

热门文章

  1. Julia: 关于1.0的Array的变化
  2. C#:重启后,AssemblyInfo中AssemblyTitle的描述内容显示正常.........
  3. 【精品分享】Kolla 让 OpenStack 部署更贴心
  4. 【路径规划】基于matlab蚁群优化遗传算法求解机器人栅格地图最短路径规划问题【含Matlab源码 1581期】
  5. 【细胞分割】基于matlab GUI阙值+边缘+形态学+种子点图像分割【含Matlab源码 615期】
  6. 【路径规划】基于matlab蚁群算法无人机巡检路径规划【含Matlab源码 138期】
  7. 语音通话视频通话前端_无需互联网即可进行数十亿视频通话
  8. 禁止跨域_新的跨域策略:使用COOP、COEP为浏览器创建更安全的环境
  9. java vector 实现二维数组
  10. oracle实际是什么意思,Oracle遇到的应用实际教程