四元组相加获得target
来源:互联网 发布:声音剪辑合成软件 编辑:程序博客网 时间:2024/06/16 14:28
四元组相加获得target
4Sum
- 给定一个数组,选择四个元素相加,结果为target,找出所有符合的四元组。
- Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.
Note: The solution set must not contain duplicate triplets.
example 1
For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.A solution set is:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2]]
思路
- 思路参照三元组相加获得target
- 多一层循环即可,注意边界检测即可。
代码
class Solution(object): def fourSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[List[int]] """ nums.sort() ret = [] for i in range(len(nums) - 3): if i > 0 and nums[i] == nums[i - 1]: continue for j in range (i+1, len(nums) - 2): if j > i + 1 and nums[j] == nums[j - 1]: continue head, tail = j+1, len(nums) - 1 while head < tail: if nums[i] + nums[j] + nums[head] + nums[tail] == target: ret.append([nums[i], nums[j], nums[head], nums[tail]]) head += 1 tail -= 1 while head < tail and nums[head] == nums[head - 1]: head += 1 while head < tail and nums[tail] == nums[tail + 1]: tail -= 1 elif nums[i] + nums[j] + nums[head] + nums[tail] > target: tail -= 1 else: head += 1 return ret
本题以及其它leetcode题目代码github地址: github地址
阅读全文
0 0
- 四元组相加获得target
- 三元组相加获得target
- 三元组相加获得结果最接近target
- 使用数获得同号码的其它字段相加
- 相加
- IE下target获得焦点时存在虚线的问题
- [LeetCode] Target Sum通过添加+/-获得目标结果
- [LeetCode]-Combination Sum I&II 求相加和为target的集合
- target
- Target
- @Target:
- Target
- target
- Target
- target
- 读取一个在0-99999之间的整数,将该整数的各位数字相加,如求和结果大于9,则继续对所获得的结果数字按各位相加求和,直至求出的和值小于10。
- 大数相加
- 分数相加-
- 实现border内边距与图片半透明
- ecshop数据字典
- Linux下 XordDos(BillGates)木马查杀记录
- UTF-8、en_US.UTF-8和zh_CN.UTF-8的区别
- 从C++函数返回多个值
- 四元组相加获得target
- 高性能序列化protostuff
- 多线程编程 使线程具有有序性
- Linux文件查找命令
- 使用spring aop管理事务
- linux+jenkins+gradle+gitlab自动化打包发布andriod APP
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; che
- MySQL入门---登陆、退出、修改提示符、常用规范
- ajax中的timeout