没有合适的资源?快使用搜索试试~ 我知道了~
最接近的三数之和(排序+双指针)1
需积分: 0 6 下载量 163 浏览量
2022-08-03
14:30:11
上传
评论
收藏 526KB PDF 举报
温馨提示
试读
2页
最接近的三数之和给定一个包括 n 个整数的数组 nums 和 一个目标值 target。示例:输出:2解释:与 target 最接近的和是 2 (-1 + 2
资源详情
资源评论
资源推荐
最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得
它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
示例:
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
if(nums.size()<3)
return -1;
int res=-1e9;//初始极小值方便后续比较 需要考虑范围 INT_MIN 超过范围
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size();i++)
{
if(i>0&&nums[i]==nums[i-1])
continue;
int left=i+1;
int right=nums.size()-1;
while(left<right)
{
int sum=nums[i]+nums[left]+nums[right];
if(sum==target)
return target;
else if(sum<target)
left++;
else if(sum>target)
right--;
else
{
while(left!=i+1&&nums[left]==nums[left-1])
left++;
while(right!=nums.size()-1&&nums[right]==nums[right+1])
right--;
}
res=abs(target-res)>abs(target-sum)?sum:res;
}
}
张景淇
- 粉丝: 39
- 资源: 277
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0