58
来源:互联网 发布:js浏览器后退刷新页面 编辑:程序博客网 时间:2024/04/29 05:22
2017.9.25
四数之和其实可以转化为三数之和。
对于数组中的每一个数,可以转化为 求解 threeSum(num[i], target - num[i])
public class Solution { /* * @param numbers: Give an array * @param target: An integer * @return: Find all unique quadruplets in the array which gives the sum of zero */public static List<List<Integer>> fourSum(int[] numbers, int target) { // write your code hereList<List<Integer>> res = new LinkedList<>();int length = numbers.length;if(length <= 3){return res;}Arrays.sort(numbers);for(int i = 0 ; i < length ; i++){int []num = new int[length-1-i];num = Arrays.copyOfRange(numbers, i+1, length);List<List<Integer>> list = new LinkedList<>();list = threeSum(num,target-numbers[i]);for(int k = 0; k < list.size();k++){List<Integer> tmp = new LinkedList<>();List<Integer> tmp1 = list.get(k);tmp.add(numbers[i]);tmp.addAll(tmp1);res.add(tmp);}while(i < length-1 && numbers[i] == numbers[i+1]){i++;}}return res; }public static List<List<Integer>> threeSum(int[] numbers, int target) { // write your code hereList<List<Integer>> res = new LinkedList<>();Arrays.sort(numbers);int length = numbers.length;if(length <=2){return res;}for(int i = 0 ; i < length;i++){// 这里是为了跳过重复的元素for(int j = i+1; j < length; j++){for(int h = j+1; h < length; h++){if(h != length -1 && numbers[h] == numbers[h+1]){continue;}if(numbers[j] + numbers[h] + numbers[i] == target){LinkedList<Integer> list = new LinkedList<Integer>();list.add(numbers[i]);list.add(numbers[j]);list.add(numbers[h]);if(res.contains(list)){continue;}res.add(list);}while(h != length -1 && numbers[h] == numbers[h+1]){h++;}}while(j != length -1 && numbers[j] == numbers[j+1]){j++;}}while(i != length-1 && numbers[i] == numbers[i+1]){i++;}}return res; }}
阅读全文
0 0
- 58
- 58
- 58
- 58
- 58
- 练习58
- nyoj-58
- nyist-58
- 58笔试
- 琢磨58
- NYOJ 58
- NYOJ 58
- NYOJ 58
- ocp-58
- droWtsaLfohtgneL.58
- LEETCODE 58
- 58tongchengapk
- 总结58
- (原创)Fragment详解(中)
- VB ini配置文件通式
- Zookeeper的API调用的同步和异步机制以及watcher机制总结
- hibernate多对多映射
- Kernel PCA 原理和演示
- 58
- 3分钟学会sessionStorage用法
- JDK8下maven使用maven-javadoc-plugin问题
- zookeeper zkClient使用
- MyBatis HelloWorld
- css小知识点
- 动态调用WebService(C#)
- 对二维数组进行倒置
- MySQL中的数据库引擎类型及常用类型间的区别