• 作者: 负雪明烛
  • id: fuxuemingzhu
  • 个人博客:http://fuxuemingzhu.cn/
  • 个人公众号:负雪明烛
  • 本文关键词:four sum, 4sum, 四数之和,题解,leetcode, 力扣,Python, C++, Java

目录

  • 题目描述
  • 题目大意
  • 解题方法
    • 遍历
  • 相似题目
  • 参考资料
  • 日期

题目地址:https://leetcode.com/problems/4sum/description/

题目描述

Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums 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 quadruplets.

Example:

Given array nums = [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的四个数字,要求返回的结果里面不准有重复的四元组。

解题方法

遍历

总结一下 K-sum 题目。

  1. 首先先排序
  2. 然后用 K−2K - 2K−2 个指针做 O(N^(K - 2)) 的遍历
  3. 剩下 2 个指针从第 2 步的剩余区间里面找,找的方式是使用两个指针 p, q 分别指向剩余区间的首尾,判断两个指针的和与 target - 第2步的和的关系,对应的移动指针。即如果两个数的和大了,那么, q–;如果两个数的和小了,那么,p++;等于的话,输出结果。要时刻注意 p < q.
  4. 用 p,q 查找剩余区间结束之后,需要移动前面的K-2个值,这里需要在移动的过程中做个去重,找到和前面不同的值继续查找剩余区间。

时间复杂度是O(N^3),空间复杂度是O(1).

class Solution(object):def fourSum(self, nums, target):""":type nums: List[int]:type target: int:rtype: List[List[int]]"""N = len(nums)nums.sort()res = []i = 0while i < N - 3:j = i + 1while j < N - 2:k = j + 1l = N - 1remain = target - nums[i] - nums[j]while k < l:if nums[k] + nums[l] > remain:l -= 1elif nums[k] + nums[l] < remain:k += 1else:res.append([nums[i], nums[j], nums[k], nums[l]])while k < l and nums[k] == nums[k + 1]:k += 1while k < l and nums[l] == nums[l - 1]:l -= 1k += 1l -= 1while j < N - 2 and nums[j] == nums[j + 1]:j += 1j += 1 # 重要while i < N - 3 and nums[i] == nums[i + 1]:i += 1i += 1 # 重要return res

相似题目

Two Sum
Two Sum II - Input array is sorted
15. 3Sum
16. 3Sum Closest
923. 3Sum With Multiplicity
454. 4Sum II

参考资料

https://blog.csdn.net/MebiuW/article/details/50938326

日期

2018 年 10 月 30 日 —— 啊,十月过完了

【LeetCode】18. 4Sum 四数之和相关推荐

  1. 18. 4Sum 四数之和

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

  2. Leetcode(18)-四数之和

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

  3. leetcode系列--454.四数之和Ⅱ

    leetcode 第454题 四数之和Ⅱ 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 &l ...

  4. Leedcode编程题18: 四数之和----C++实现

    目的 旨在记录在Leedcode网上刷题的过程,记录心得. 题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得  ...

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

    454.四数相加Ⅱ.383.赎金信.15.三数之和四数之和 四数相加 对于四数相加,我们可以定义一个map用来记录nums1与nums2的和对应次数,再遍历nums3与nums4,如果存在c与d使得a ...

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

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

  7. leetcode系列--18.四数之和

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

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

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

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

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

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

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

最新文章

  1. 树莓派视觉小车 -- OpenCV巡线(HSL色彩空间、PID)
  2. JavaScript入门(part5)--数据类型转换
  3. PDFlib免费下载地址及详细介绍手册
  4. VB.NET 中的 As New 以及型別指定
  5. Sublime配置VI插件后 快捷键总结
  6. 极简代码(二)—— 内积
  7. 一次解锁三个BIG分析图制作思路,畅快!
  8. WindowsServer2003 2008R2架设ASP网站实战
  9. 美版iPhone4卡贴解锁
  10. 游戏网络同步——MMO位置同步
  11. 腾讯云TRTC接入测试以及状态同步功能重点验证
  12. 后台系统的权限控制与管理
  13. MySQL的varchar水真的太深了——InnoDB记录存储结构
  14. 访问局域网中的虚拟机(详细教程!)
  15. 计算机考研专业课考研真题,计算机考研专业课真题.docx
  16. 阿布扎比欢迎全世界所有已接种疫苗的旅行者,该政策9月5日起生效
  17. AES DES比较分析
  18. 新手带项目那些事儿(0.15-1.07)
  19. 转发:区块链产业平台建设领域发展情况:公有链/联盟链/BaaS是三种较主流平台模式
  20. 【机器学习实验】用Python进行机器学习实验

热门文章

  1. 圆角矩形大小怎么调整html,html圆角矩形
  2. FileDownloader 库推荐
  3. 资源共享——FTP服务
  4. FPGA芯片内两种存储器资源
  5. python编程求长方形的面积_python实现用类读取文件数据并计算矩形面积
  6. VsCode+PHP开发 推荐插件
  7. 微信公众号调取相册和摄像头功能,实现图片上传
  8. Linux下的man指令
  9. Python高级-前端-01-HTML和CSS
  10. 日系插画学习笔记(二):结构与透视