18.四数之和
1.题目描述
给定一个包含n个整数的数组 nums 和一个目标值 target 判断 nums 中是否存在四个元素 a,b,c 和 d ,使得四个元素的和与 target 相等?找出所有满足条件且不满足重复的四元组。
注意:
答案中不可以包含重复的四元组。
1.1示例
2.代码
这道题刚开始没想到怎么写,然后参考了大佬的解题思路。
链接: https://leetcode-cn.com/problems/4sum/solution/ji-bai-9994de-yong-hu-you-dai-ma-you-zhu-shi-by-yo/.
class Solution {
private List<List<Integer>> ans;
public List<List<Integer>> fourSum(int[] nums, int target) {
ans=new ArrayList<>();
//先判断数组是否非空,或者数组长度小于4
if(nums==null || nums.length<4){
return ans;
}
//先对数组进行排序
Arrays.sort(nums);
int len=nums.length;
//从数组的最小元素,即第一个数开始遍历
for(int i=0;i<len-3;i++){
//如果当前元素i与前一个元素相等,则结果会产生重复,所以跳过
if(i>0 && nums[i]==nums[i-1]