16.最接近的三数之和
我的解法
参考上一题的排序+双指针,注意给初始的diff设一个较大的值,否则可能因为符号原因导致找不到结果。
官方解法
同上。主要看了一下评论区的优化思路:一是考虑排序后,对于外层循环的i,最小的三数之和为num[i]+num[i+1]+num[i+2],如果这个数也比target大的话,就不需要进行后续的双指针操作了。二是第一个数固定为num[i]后,最大的s为num[i]+num[-2]+num[-1],如果这个数比target小,那么同样不需要进行双指针遍历(其实以上都是同样的思路,即考虑最极端的情况是否可以帮助排除一些答案)。