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

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

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.
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求和,然后在过程中及时约束,判断是否可以提前跳出循环来优化。

vector
> fourSum(vector
& nums, int target) { vector
>result; const int size = nums.size(); if (size < 4) return result; sort(nums.begin(), nums.end()); vector
temp; for (int i = 0; i < size - 3; i++) { if (nums[i] + nums[i + 1] + nums[i + 2] + nums[i + 3] > target) break;//及时跳出循环 if (nums[i] + nums[size - 3] + nums[size - 2] + nums[size - 1] < target)continue; for (int j = i + 1; j < size-2; j++) { if (nums[i] + nums[j] + nums[j + 1] + nums[j + 2] > target) break;//及时跳出循环 if (nums[i] + nums[j] + nums[size - 2] + nums[size - 1] < target)continue; int left = j + 1; int right = size - 1; while (left < right) { int sum = nums[i] + nums[j] + nums[left] + nums[right]; if (sum < target)left++; else if (sum > target) right--; else { temp = {nums[i],nums[j],nums[left],nums[right]};//新学一招,类似数组赋值 result.push_back(temp); while (left < right && nums[left] == temp[2])left++; while (left < right && nums[right] == temp[3])right--; } } while (j + 1 < size && nums[j + 1] == nums[j])j++; } while (i + 1 < size && nums[i + 1] == nums[i])i++; } return result; }

参考:

转载于:https://www.cnblogs.com/hellowooorld/p/6531103.html

你可能感兴趣的文章
Chris:怎样成为一名Android应用开发
查看>>
深入浅出 React Native:使用 JavaScript 构建原生应用
查看>>
Foundations of Python Network Programming - 读书笔记系列(3) - Email Services
查看>>
Oracle下建立dblink时的权限问题
查看>>
chrome浏览器,调试详解,调试js、调试php、调试ajax
查看>>
jQuery Ajax 回顾
查看>>
点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
查看>>
如何在移动设备上搭建服务器承载自己的全景作品?
查看>>
iOS SQLite3数据库操作
查看>>
除了 iOS 和 Android,世界第三大移动系统是什么?
查看>>
35.7. FAQ
查看>>
深搜算法实例:老鼠走迷宫(一)
查看>>
VMWare网络设置的3中方式(转)
查看>>
支付这条线上 谁在赚钱谁在哭?
查看>>
机器学习之朴素贝叶斯分类
查看>>
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
【设计模式系列】--抽象工厂
查看>>
JqueryValidate 动态添加验证
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
建立备份策略的重要性
查看>>