四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

0 <= a, b, c, d < n
a、b、c 和 d 互不相同
nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。

示例 1:

输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]
示例 2:

输入:nums = [2,2,2,2,2], target = 8
输出:[[2,2,2,2]]

提示:

1 <= nums.length <= 200
-109 <= nums[i] <= 109
-109 <= target <= 109

解题思路:

本题解题思路和三数之和的类似,都是使用双指针法,可以参考我的另一篇文章:三数之和

基本就是在三数之和的基础上再套一层for循环。

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);for (int i = 0; i < nums.length - 3; i++) {//因为target可以为负数,所以这句话不需要// if (nums[i] > target) return res;if (i > 0 && nums[i] == nums[i - 1]) continue;for (int j = i + 1; j < nums.length - 2; j++) {if (j > i + 1 && nums[j] == nums[j - 1]) continue;int left = j + 1;int right = nums.length - 1;while (left < right) {int temp = nums[i] + nums[j] + nums[left] + nums[right];if (temp == target) {res.add(Arrays.asList(nums[i], nums[j], nums[left], nums[right]));while (left < right && nums[left] == nums[left + 1]) left++;while (left < right && nums[right] == nums[right - 1]) right--;left++;right--;}else if (temp < target) left++;else right--;}}}return res;}
}

LeetCode——四数之和相关推荐

  1. 【LeetCode】两数之和、三数之和、四数之和系列

    文章目录 两数之和★ 三数之和★★ 四数之和★★ 四数相加Ⅱ★★ 最接近的三数之和★★ 此篇文章总结下力扣中的两数之和.三数之和.四数之和及一系列求数组中满足达到目标值的元组个数的问题,仔细阅读下面的 ...

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

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

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

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

  4. 两数、三数、四数之和相关题目(Leetcode题解-Python语言)

    作为 Leetcode 的第一题,两数之和自然是知名度最高的,从两数之和出发也有不少的衍生题目,下面就让我们好好地解决它们. 1. 两数之和 class Solution:def twoSum(sel ...

  5. 20200127:(leetcode)四数之和(动态图解)

    四数之和 题目 基本思路 代码实现 题目 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + ...

  6. 算法LeetCode解题(C++)-15. 四数之和(难度:中等)

    题目描述: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等 ...

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

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

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

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

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

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

  10. Leetcode(18)-四数之和

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

最新文章

  1. 2022-2028年中国工业节能行业深度调研及投资前景预测报告
  2. BZOJ 3626: [LNOI2014]LCA
  3. 正则截取指定字符串 php,php截取指定字符串除了正则还有什么方法
  4. COM 组件设计与应用(七)
  5. c语言中用简易暗纹来输入密码,确定夫琅和费单缝衍射明、暗纹位置的不同教学方法的讨论...
  6. C#LeetCode刷题之#892-三维形体的表面积(Surface Area of 3D Shapes)
  7. 火爆GitHub!3.2k Star的可视化神器开源!
  8. 【Elasticsearch】es node 节点
  9. OpenStack互操作性认证 为何有UnitedStack?
  10. iOS音乐播放器相关
  11. 华为盒子m330能生鸿蒙吗,不仅能看片 教你怎么玩转华为M330盒子
  12. 麦克风的计算机英语词汇,[转帖]麦克风计划:神舟五号载人飞船词汇
  13. 医疗器械/设备的法律法规汇总
  14. java画图板可选颜色,java学习——画图板
  15. 定期年化40%,我把5000多个FIL全部存入了DMEX平台
  16. java实现排兵布阵(回溯法)
  17. IDEA如何在包下面继续建包
  18. 关于共享单车乱摆放问题的调研报告
  19. 浅谈ajax使用方法
  20. 不正经技术研究,键盘侠,你武器可能有个坑!!

热门文章

  1. Java反射 二三事
  2. 算法学习之投票算法以及对应leetcode题目
  3. 2022考研资料每日更新(2021.05.07)
  4. Python做一份简易旅行攻略——疫情之后,若条件允许,可愿意用一场旅行“弥补”自己
  5. Python爬虫介绍
  6. 2011新版车主宝典改进亲体验(Android版)
  7. linux下载info安装包,Linux软件包安装(rpm、yum、apt-get)
  8. (附源码)node.js基于vue框架潮牌官网设计与实现 毕业设计 010955
  9. 企业支付宝转账到银行卡(免费率 无限额)PHP 演示示例
  10. 使用html+css画一个波士顿凯尔特人的三叶草logo