您的位置:首页 > 其它

LeetCode 016 3Sum Closest

2016-05-05 12:11 417 查看
题目大意是在数组中找3个数,使其的和最靠近给出的目标整数target。

思路和上一题3Sum一样,但是不能用hashmap因为要找的是最接近的数。

最快的算法是先排序。从小到大枚举最小的第一个数。然后从两边往中间扫描,得出第二个和第三个数。

需要注意的是,虽然时间复杂度都一样,但是一些常数上的优化可以大大加速程序:

跳过重复的数

当最小数*3超过target时直接返回。

当中间数*2超过(target-最小数)时跳过此轮循环

当三个数相加等于target时直接返回

加了以上优化,程序从52ms加快到8ms。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode