Leetcode18.四数之和
Time: 20190920
Type: Medium
题目描述
给定一个包含n
个整数的数组nums
和一个目标值target
,判断nums
中是否存在四个元素a
,b
,c
和d
,使得a + b + c + d
的值与target
相等?找出所有满足条件且不重复的四元组。
注意:
答案中不可以包含重复的四元组。
示例:
给定数组nums = [1, 0, -1, 0, -2, 2]
,和target = 0
。
满足要求的四元组集合为:
[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/4sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
本题是三数之和的延续。也包含去重,所以,排序是基本操作。
三数之和是固定一个数,然后在后面用双指针查找,四数之和是固定两个数,然后用双指针在后面查找。
代码
class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:if len(nums) < 4 or nums == None:return Nonenums.sort()res = []for i in range(len(nums)):if i > 0 and nums[i] == nums[i-1]:continuenewTarget = target - nums[i]for j in range(i + 1, len(nums)):if j > i + 1 and nums[j] == nums[j-1]:continuenewTarget2 = newTarget - nums[j]m = j + 1n = len(nums) - 1while m < n:if nums[m] + nums[n] == newTarget2:temp = [nums[i], nums[j], nums[m], nums[n]]res.append(temp)while m < n and nums[m] == nums[m+1]:m += 1while m < n and nums[n] == nums[n-1]:n -= 1m += 1n -= 1elif nums[m] + nums[n] > newTarget2:n -= 1elif nums[m] + nums[n] < newTarget2:m += 1return res
2019.10 Update:
第一届PAT算法直播课培训班招募帖,欢迎点击查看详情、
END.
Leetcode18.四数之和相关推荐
- leetcode18. 四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...
- LeetCode18.四数之和 JavaScript
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...
- leetcode18. 四数之和(双指针)
一:题目 二:上码 class Solution {public:vector<vector<int>> fourSum(vector<int>& nums ...
- Leetcode(18)-四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...
- 4. Leetcode 18. 四数之和 (数组-双向双指针)
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...
- LeetCode 17电话号码的字母组合(搜索)18四数之和
电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23 ...
- 算法笔记-两数之和、三数之和、四数之和(LeetCode)
两数之和 1.两数之和 题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...
- java小编程----四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...
- 四数之和Python解法
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...
最新文章
- Android开发--Notification和PendingIntent
- CentOs7 卸载 MySql + 通过 yum 安装 MySql
- HandlerThread:带消息循环(Looper)的线程
- oracle读写文件--利用utl_file包对磁盘文件的读写操作
- 文都计算机考研辅导班哪个好,考研辅导班哪个好,海文还是文都?
- DH算法(密钥交换算法)
- Linux驱动开发(九)---树莓派I2C设备驱动开发(BME280)
- 微信小程序 免密代扣
- binary complement
- 定时器中Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
- 手把手带你用Python完成一个数据分析项目,能写进简历,拿走不谢!(另送15个实战案例)...
- Blast中文手册(6)
- 华为mate40pro和p40pro参数对比 华为mate40pro和p40pro哪个好
- 百度实体链接比赛后记:行为建模和实体链接(含代码分享)
- java复习之tomcat配置详解
- OSPF规划两大模型:双塔奇兵、犬牙交错
- 异或(XOR)运算加密/解密算法
- php报错 Function name must be a string in xxxx解决
- C#将html导出到word(基于wps)
- 电商项目实战第五节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【商品栏及右侧垂直导航】
热门文章
- #pragma 的几种用法
- 硕博经验——科研论文阅读与写作实战技巧
- php srem,Redis Srem 命令
- who i am !
- php公司共享 管理,php – 管理几个共享重叠函数和类的代码库
- 被调用的对象已与其客户端断开连接 win10_【完整案例】基于Socket开发TCP传输客户端...
- 最长公共子序列php,动态规划(最长公共子序列LCS)
- 怎么批量抠复杂的图_抠图怎么抠?一次教你五招!
- linux中top命令_Linux中的top命令指南
- python编程语言_Python编程语言的历史