Time: 20190920
Type: Medium

题目描述

给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素abcd ,使得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.四数之和相关推荐

  1. leetcode18. 四数之和

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  2. LeetCode18.四数之和 JavaScript

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  3. leetcode18. 四数之和(双指针)

    一:题目 二:上码 class Solution {public:vector<vector<int>> fourSum(vector<int>& nums ...

  4. Leetcode(18)-四数之和

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  5. 4. Leetcode 18. 四数之和 (数组-双向双指针)

    给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...

  6. LeetCode 17电话号码的字母组合(搜索)18四数之和

    电话号码的字母组合 题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23 ...

  7. 算法笔记-两数之和、三数之和、四数之和(LeetCode)

    两数之和 1.两数之和 题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...

  8. java小编程----四数之和

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  9. 四数之和Python解法

    给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...

最新文章

  1. Android开发--Notification和PendingIntent
  2. CentOs7 卸载 MySql + 通过 yum 安装 MySql
  3. HandlerThread:带消息循环(Looper)的线程
  4. oracle读写文件--利用utl_file包对磁盘文件的读写操作
  5. 文都计算机考研辅导班哪个好,考研辅导班哪个好,海文还是文都?
  6. DH算法(密钥交换算法)
  7. Linux驱动开发(九)---树莓派I2C设备驱动开发(BME280)
  8. 微信小程序 免密代扣
  9. binary complement
  10. 定时器中Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
  11. 手把手带你用Python完成一个数据分析项目,能写进简历,拿走不谢!(另送15个实战案例)...
  12. Blast中文手册(6)
  13. 华为mate40pro和p40pro参数对比 华为mate40pro和p40pro哪个好
  14. 百度实体链接比赛后记:行为建模和实体链接(含代码分享)
  15. java复习之tomcat配置详解
  16. OSPF规划两大模型:双塔奇兵、犬牙交错
  17. 异或(XOR)运算加密/解密算法
  18. php报错 Function name must be a string in xxxx解决
  19. C#将html导出到word(基于wps)
  20. 电商项目实战第五节: CSS3+HTML5+JS 设计案例【考拉海购网站】之【商品栏及右侧垂直导航】

热门文章

  1. #pragma 的几种用法
  2. 硕博经验——科研论文阅读与写作实战技巧
  3. php srem,Redis Srem 命令
  4. who i am !
  5. php公司共享 管理,php – 管理几个共享重叠函数和类的代码库
  6. 被调用的对象已与其客户端断开连接 win10_【完整案例】基于Socket开发TCP传输客户端...
  7. 最长公共子序列php,动态规划(最长公共子序列LCS)
  8. 怎么批量抠复杂的图_抠图怎么抠?一次教你五招!
  9. linux中top命令_Linux中的top命令指南
  10. python编程语言_Python编程语言的历史