leetcode解题之 18. 4Sum Java版(结果是目标值的四个数字和)

来源:互联网 发布:日本漫画下载软件 编辑:程序博客网 时间:2024/05/21 17:17

18. 4Sum

Given an array S of n integers, are there elementsa, 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: The solution set must not contain duplicate quadruplets.

给一个数组,和一个target整数,求数组中能够使得和为target的所有组合a,b,c,d并满足a<=b<=c<=d

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]]参考:3sum 
public List<List<Integer>> fourSum(int[] nums, int target) {List<List<Integer>> ret = new ArrayList<>();if (nums == null || nums.length < 3)return ret;int len = nums.length;Arrays.sort(nums);// 注意,对于 num[i],寻找另外两个数时,只要从 i+1 开始找就可以了。// 这种写法,可以避免结果集中有重复,因为数组时排好序的,// 所以当一个数被放到结果集中的时候,其后面和它相等的直接被跳过。for (int i = 0; i < len; i++) {// 避免重复!!!!if (i > 0 && nums[i] == nums[i - 1])continue;for (int j = i + 1; j < len; j++) {// 注意jif (j > i + 1 && nums[j] == nums[j - 1])continue;// 往后找,避免重复int begin = j + 1;int end = len - 1;while (begin < end) {int sum = nums[i] + nums[j] + nums[begin] + nums[end];if (sum == target) {List<Integer> list = new ArrayList<>();list.add(nums[i]);list.add(nums[j]);list.add(nums[begin]);list.add(nums[end]);ret.add(list);begin++;end--;// 避免重复!!!!while (begin < end && nums[begin] == nums[begin - 1])begin++;while (begin < end && nums[end] == nums[end + 1])end--;} else if (sum > target)end--;elsebegin++;}}}return ret;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 家人受到小贷公司催款威胁怎么办 商标抽签资料提交上去有问题怎么办 花椒直播助手苹果版下载不了怎么办 在香港酒店住把床单弄上血了怎么办 综英美我能怎么办我也很绝望百度云 护照的名字中间有个空格怎么办 开车不小心压死黄鼠狼了怎么办 三户联保贷款一方不还怎么办 因为隔断中介违约…我该怎么办 上海居住证没下来换住址了怎么办 工商注册后大股东不注资怎么办 公司不给去办理变更股东信息怎么办 滴滴车主注册没有自己的车型怎么办 代办用虚假地址注册的公司怎么办? 写字楼注册公司租户不租了怎么办 租户没把公司迁出我该怎么办 租户不肯把户口迁出了业主怎么办 同片区个体户营业场所搬迁怎么办 个体领发票的本丢了怎么办 领房产证发票和合同丢了怎么办 税务登记证5年没有办怎么办 二证合一后税务登记证怎么办? 微信漂流瓶打招呼对方收不到怎么办 添加不上徽信好友的微信帐号怎么办 手机号码不用了微信密码忘了怎么办 别人用我的手机号码注册微信怎么办 电脑此网站的安全证书有问题怎么办 起诉离婚开庭时被告不到场怎么办 商标35类被别人注册了怎么办 商标被注销后被别人注册怎么办 电商35类商标被抢注怎么办 血小板太低怎么办可以吃水果吗? 微信好友删除了只记得昵称怎么办 优酷会员1080p很卡怎么办 电脑最下面的任务栏不显示怎么办 ea账号保留的问题忘了怎么办 微博超级话题账号被屏蔽怎么办 梦幻西游手机将军令号码换了怎么办 文档的内容被锁定无法修改怎么办 用户没有权限访问u盘时该怎么办? 电脑找不到ip地址连不上网怎么办