18 4Sum
来源:互联网 发布:js 布尔值转数字 编辑:程序博客网 时间:2024/05/16 01:50
public class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { if(nums==null||nums.length<4){ return new ArrayList<List<Integer>>(); } Arrays.sort(nums); return findKSumInOrderArray(nums, 0, 4, target); } public List< List<Integer> > findKSumInOrderArray(int[] nums, int begin, int count, int target){ List< List<Integer> > res = new ArrayList<List<Integer>>(); HashSet<Integer> visited = new HashSet<Integer>(); if(count==2){ int f = begin, r = nums.length-1; while(f < r){ int sum = nums[f] + nums[r]; if((sum==target) && (!visited.contains(nums[f])) ){ List<Integer> tuple = new ArrayList<Integer>(); tuple.add(nums[f]); tuple.add(nums[r]); visited.add(nums[f]); visited.add(nums[r]); res.add(tuple); ++f; --r; }else if(sum < target){ ++f; }else{ --r; } } }else{ for(int i=begin;i<nums.length;++i){ if(!visited.contains(nums[i])){ visited.add(nums[i]); List<List<Integer>> subset = new ArrayList<List<Integer>>(); subset = findKSumInOrderArray(nums, i+1, count-1, target-nums[i]); if(!subset.isEmpty()){ for(int j=0;j<subset.size();++j){ List<Integer> tmp = subset.get(j); tmp.add(0, nums[i]); } res.addAll(subset); } } } } return res; }}
0 0
- [Leetcode] #1#15#18 2Sum & 3Sum & 4Sum
- 15. 3Sum && 16 sum closet && 18 4sum
- LeetCode 18 4Sum K-sum系列
- Sum—LeetCode-18 4Sum
- LeetCode 18: 4Sum
- [leetcode 18] 4Sum
- [leetcode] 18 4Sum
- leetcode.18--------------4Sum
- leetcode 18 4Sum
- LeetCode---(18) 4 Sum
- LeetCode 18 - 4Sum
- LeetCode 18: 4Sum
- leetcode 18 -- 4Sum
- Leetcode[18]-4Sum
- leetcode-18 4Sum
- 18-m-4Sum
- leetcode 18: 4Sum
- Leetcode#18 4Sum
- 最有效的外部链接标准:SEO外链专员操作规范
- 迈进Java:HelloWorld
- nginx屏蔽ip
- Linux内核工程导论——总线:Linux PCI
- Sublime Text 使用方法及其技巧
- 18 4Sum
- C++中定义自己的头文件
- USACO-Section 2.1 Sorting a Three-Valued Sequence (贪心)
- android如何实现账号注销功能
- Ztree简介
- Linux进程与线程的区别和联系
- Unity3D有限状态机(FSM)学习笔记【1】有限状态机总述
- android中sharedpreference的使用
- 线性约束最优化问题的Frank-Wolfe方法