设 s=nums+nums[i+1]+nums[i+2]。如果s>target,由于数组已经排序,后面无论怎么选,选出的三个数的和不会比 s 还小,以是不会找到比 s 更优的答案了。以是只要s>target,就可以直接 break 外层循环了。在 break 前判断 s 是否离 target 更近,如果更近,那么更新答案为s。
设 s=nums+nums[n−2]+nums[n−1]。如果 s<target,由于数组已经排序,nums加上后面任意两个数都不超过 s,以是下面的双指针就不必要跑了,无法找到比 s 更优的答案。但是后面另有更大的nums,可能找到一个离 target 更近的三数之和,以是还必要继续枚举,continue 外层循环。在 continue前判断 s 是否离 target 更近,如果更近,那么更新答案为 s,更新 minDiff 为 target−s。