题目
出处:LeetCode 算法第18题
给定一个包含 n 个整数的数组
nums
和一个目标值target
,判断nums
中是否存在四个元素 a,**b,c 和 d ,使得 a + b + c + d 的值与target
相等?找出所有满足条件且不重复的四元组。注意:
答案中不可以包含重复的四元组。
示例:
1 | 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 |
思路
- 首先对数组进行排序,设置两个for循环,作为四个数中的前两个数,有可能有两个相同的数,遇到相同的数跳过,这样做是为了避免重复
- 四个数中的后两个数怎么办,通过设置两个指针m和n,m从数组前往后进行遍历,n用来从数组后往前进行遍历。m>=n是结束循环的条件
- 遇到 target == a + b + c + d 的数就加到ArrayList中
代码
1 | public class Basic18 { |