5. Leetcode 15. 三数之和 (数组-双向双指针)
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:输入:nums = []
输出:[]主要思想: 采取固定一个数,同时用双指针来查找另外两个数的方式具体步骤如下:
1、我们可以先对数组进行排序,然后我们选择一个数字做 C 位,然后我们在这 个 C 位数字的右边进行双指针搜索:
2、从最左边 i+1(最小值)和最右边 len(nums)-1(最大值)两个数字开始,加 上 C 位,计算总和是否等于 0。
如果大于 0,说明实力太强了,就把右侧的数字左移一位。
如果小于 0,说明实力太弱了,就把左边的数字右移一位。 3、当双指针碰到的时候,这轮循环结束,以该数字为 C 位的所有可能都已经尝 试完毕了。class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort()res = []for i in range(len(nums)):if i > 0 and nums[i] == nums[i-1]:continueleft, right = i + 1, len(nums) - 1while left < right:total = nums[left] + nums[right] + nums[i]if total < 0:left += 1elif total > 0:right -= 1else:res.append([nums[i],nums[left],nums[right]])while left < right and nums[left] == nums[left + 1]:left += 1while left < right and nums[right] == nums[right - 1]:right -= 1left += 1right -= 1return res
5. Leetcode 15. 三数之和 (数组-双向双指针)相关推荐
- 4. Leetcode 18. 四数之和 (数组-双向双指针)
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...
- 3. Leetcode 16. 最接近的三数之和 (数组-双向双指针)
给你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在恰好一个解.示例 1: ...
- 1. Leetcode 1. 两数之和 (数组-双向双指针)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标.你可以假设每种输入只会对应一个答案.但是,数组中同一个 ...
- [双指针|模拟] leetcode 15 三数之和
[双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...
- Java实现 LeetCode 15 三数之和
15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...
- LeetCode 15. 三数之和(3Sum)
15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...
- LeetCode 15. 三数之和【双指针】
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...
- LeetCode 15. 三数之和
题目描述 15. 三数之和 思路 思路1 比较容易想到的就是,求三数之和等于0,可以等价于求两个数的和,然后看这个和的相反数是否在nums里面. 但是 T_T这样的话复杂度太高了,会超时,捂脸,最后三 ...
- LeetCode 15三数之和16最接近的三数之和
三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...
最新文章
- 分析无线充电线圈产生的导航信号在自绕工字型电感中的感应电动势
- 荣耀手表magic2更新鸿蒙时间表,荣耀手表2更新百种运动模式 618期间到手价799元起...
- 瞿菡云计算机,“国家资助 伴我成长”——我校学生王丽娜、肖云菡荣获中职教育“国家奖学金”事迹材料...
- 【POJ - 3125 】Printer Queue(模拟,队列+优先队列,STL)
- Effective Java 在工作中的应用总结
- vs2008保存超级慢
- Docker web管理界面——Shipyard
- 怎么查看linux硬盘多路径,linux下磁盘多路径
- 利用PLTS将校准用的“trace”一分为二 操作指南
- 计算机测试英语词汇,英语听说测试-计算机专业英语词汇.pdf
- 计算机键盘快速指南,菜鸟必看 Windows键盘快捷键入门指南
- Flutter 实战之dart语言
- 美团财报数据初步分析
- 什么是Power Apps?
- Exception: Gradle install not valid ___APK打包报错
- 一文读懂“什么是Web 1.0,Web 2.0,Web 3.0?”
- 10个BS后台UI框架
- Java引用和C++引用
- word标题前自动分页
- Wordpress网页直接插入bilibili视频方法