【leetcode】16.3Sum Closest 方法总结
来源:互联网 发布:云数据分析 编辑:程序博客网 时间:2024/06/08 15:03
【方法一】
「思路」
先将数组排序,用目标数依次减去nums中的每一个数作为间接目标数mid。对剩下的数组设立两个指针,front和back,从两面夹击使得minus=mid-nums[front]-nums[back]的绝对值最小。minus实际代表与target的差值。minus绝对值越小代表与target越接近。最终用target-minus就得到了我们要的答案。
「结果」
Runtime: 16 ms
「代码」
int threeSumClosest(vector<int>& nums, int target) { int n=nums.size(); int ans=10000; sort(nums.begin(),nums.end()); for(int i=0;i<n;i++) { int mid=target-nums[i]; int front=i+1; int back=n-1; while(front<back) { int minus=mid-nums[front]-nums[back]; if(abs(ans)>abs(minus)) { ans=minus; } if(minus>0) { front++; } else if(minus<0) { back--; } else break; } } return target-ans; }
做完题后查看了leetcode上的答案,不管是6ms还是9ms的答案,解题思路都一致。有意思的是,我仅仅将第6行的for(int i=0;i<n;i++)
改为for(int i=0;i<n-2;i++)
,leetcode的运行结果改变为:
Runtime: 9 ms
阅读全文
0 0
- 【leetcode】16.3Sum Closest 方法总结
- [LeetCode]16.3Sum Closest
- LeetCode 16.3Sum Closest
- [leetcode] 16.3Sum Closest
- LeetCode-16.3Sum Closest
- Leetcode||16.3Sum Closest
- LeetCode 16.3Sum Closest
- LeetCode----- 16.3Sum Closest
- [leetcode]16.3Sum Closest(Java实现)
- LeetCode: 3 Sum Closest
- leetcode - 3 sum closest
- leetcode 3Sum Closest
- LeetCode: 3Sum Closest
- [Leetcode]3Sum Closest
- Leetcode: 3SUM Closest
- LeetCode 3Sum Closest
- [Leetcode] 3Sum Closest
- LeetCode : 3Sum Closest
- Oracle报 ORA-00054资源正忙的解决办法
- [K8S] 认证集群搭建
- C++循环的嵌套
- 省市二级联动 通过省份选择城市 JS的简单应用 二级下拉列表
- Spring Data Redis ----Redis仓库----笔记6
- 【leetcode】16.3Sum Closest 方法总结
- 1038. Recover the Smallest Number (30)
- 算法--总章
- git rebase
- 四元数AHRS姿态解算和IMU姿态解算分析
- 肾脏
- ThinkPHP5 表单请求和验证
- 原来你是这样的阿里云
- 在Mac上安装Wine