LeetCode 016 3Sum Closest

来源:互联网 发布:mac草莓红试色cockney 编辑:程序博客网 时间:2024/05/29 16:54

题目大意是在数组中找3个数,使其的和最靠近给出的目标整数target。

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

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

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

  1. 跳过重复的数
  2. 当最小数*3超过target时直接返回。
  3. 当中间数*2超过(target-最小数)时跳过此轮循环
  4. 当三个数相加等于target时直接返回

加了以上优化,程序从52ms加快到8ms。

0 0