博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode] 4Sum
阅读量:6533 次
发布时间:2019-06-24

本文共 1649 字,大约阅读时间需要 5 分钟。

hot3.png

Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

Note:

  • Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, abcd)
  • The solution set must not contain duplicate quadruplets.
For example, given array S = {1 0 -1 0 -2 2}, and target = 0.    A solution set is:    (-1,  0, 0, 1)    (-2, -1, 1, 2)    (-2,  0, 0, 2)

思路:转换成2Sum,注意跟3Sum一样先排序去重。

import java.util.ArrayList;import java.util.Arrays;public class Solution {	public ArrayList
> fourSum(int[] num, int target) { ArrayList
> result = new ArrayList
>(); if (num == null || num.length < 4) return result; int n = num.length; Arrays.sort(num); int i, j, start, end, sum; for (i = 0; i < n - 3; i++) { for (j = i + 1; j < n - 2; j++) { start = j + 1; end = n - 1; while (start < end) { sum = num[start] + num[end]; if (sum < target - num[i] - num[j]) start++; else if (sum > target - num[i] - num[j]) end--; else { ArrayList
tmp = new ArrayList
(); tmp.add(num[i]); tmp.add(num[j]); tmp.add(num[start]); tmp.add(num[end]); result.add(tmp); start++; end--; while (start < j && num[start - 1] == num[start]) start++; while (end >= j + 1 && num[end + 1] == num[end]) end--; } } while (j < n - 1 && num[j] == num[j + 1]) j++; } while (i < n - 1 && num[i] == num[i + 1]) i++; } return result; } public static void main(String[] args) { System.out.println(new Solution().fourSum(new int[] { 1, 0, -1, 0, -2, 2 }, 0)); }}

转载于:https://my.oschina.net/jdflyfly/blog/283674

你可能感兴趣的文章
Windows Server 2008 启用公共文件夹共享
查看>>
【运维故事】职场如何领先一步?
查看>>
如何提高SEO优化团队效率
查看>>
SFB 项目经验-17-Windows 2012 R2-补丁打到最新-问题-KB2982006
查看>>
用hadoop中的libhdfs和fuse-dfs构建快速云存储
查看>>
Apple Watch的非“智能手表”卖点
查看>>
fedora17升级到fedora18
查看>>
单例模式(Singleton)
查看>>
函数指针和指针函数
查看>>
Python的函数参数传递:传值?引用?
查看>>
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>
android call require api level
查看>>
Mac下android环境搭建
查看>>
创建Visual Studio项目模版向导的几篇参考文章
查看>>
深入浅出SQL Server Replication第一篇:走近Replication(上)
查看>>
[TopCoder][SRM] SRM 562 DIV 2
查看>>
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
查看>>
LocalAlloc,VirtualAlloc,malloc,new的异同
查看>>
回调函数
查看>>
win7 x64 jdk1.7.0_51
查看>>