四数之和

给你一个由 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. CORS漏洞利用检测和利用方式
  2. FreeRTOS 临界段和开关中断
  3. CS231n课程笔记翻译:图像分类笔记(下)
  4. 统计学习方法第二十章作业:潜在狄利克雷分配 LDA 吉布斯抽样法算法 代码实现
  5. 在Java 8之前的项目中使用JUnit 5
  6. ArcEngine中使用上下左右键移动地图
  7. 计算机谭音乐同桌的你,同桌的你_Ava_clover_新浪博客
  8. 【Vegas原创】使用javascript实现两个listbox中的添加、删除
  9. linux(windows,mac)下安装ta-lib
  10. 搜索引擎广告计费系统如何防恶意点击
  11. 使用多线程提高Rest服务性能
  12. 如何将电视机用作 Mac 的显示器?
  13. 3.7V锂电池升压5V方案
  14. jade安装及基本语法使用
  15. 天正坐标标注怎么不显示_cad中坐标标注怎么显示不了xy的
  16. mb860 刷机教程
  17. 上传txt文件乱码问题
  18. 做嵌入式开发经历(三).绝知此事要躬行
  19. 苹果设置显示连接到服务器,iPhone升级更新至iOS9后显示连接到iCloud服务器错误现象的解决办法...
  20. [ERROR][logstash.agent] Failed to execute action {:action=>LogStash

热门文章

  1. 20dbm是多少mw
  2. 【web】自定义协议Protocol URL
  3. unsupported pickle protocol: 5
  4. ch3 电磁干扰的耦合和传播
  5. mysql查询bom清单_U8 数据库BOM表SQL语句查询
  6. SEO|解析关键词密度与分布
  7. HDU4747 MEX(dp ,递推)
  8. 计算机桌面图标字变蓝色,桌面的图标都变蓝了怎么解决【解决方法】
  9. OS实验-模拟实现首次/最佳/最坏适应算法的内存块分配和回收
  10. 表白生成器PHP源码,带自动生成的php表白程序 v1.0