四数之和
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++){//四数之和
int target1 = target - nums[i];
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 l = j+1,r=nums.length-1;
while (l < r){//两数之和模板
int sum = nums[j]+nums[l]+nums[r];
if(sum == target1){
res.add(Arrays.asList(nums[i],nums[j],nums[l],nums[r]));
while(l < r && nums[r] == nums[r-1]) r--;
while (l < r && nums[l] == nums[l+1]) l++;
l++;r--;
}
else if(sum < target1) l++;
else r--;
}
}
}
return res;
}
}
不一样的烟火
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步