16. 3Sum Closest
分析
暴力做法就是三重循环,每种答案枚举一遍,求一个最接近的值。
用双指针优化。先枚举位置i,对每一个位置j,找到一个最小的位置k使得 nums[i] + nums[j] + nums[k] >= target,这样可以得到大于等于target的最小值。并且,当k满足前述条件时,必然有 nums[i] + nums[j] + nums[k - 1] < target,也就可以得到小于target的最大值。每次更新下这两个值即可。
C++代码
|
|
暴力做法就是三重循环,每种答案枚举一遍,求一个最接近的值。
用双指针优化。先枚举位置i,对每一个位置j,找到一个最小的位置k使得 nums[i] + nums[j] + nums[k] >= target,这样可以得到大于等于target的最小值。并且,当k满足前述条件时,必然有 nums[i] + nums[j] + nums[k - 1] < target,也就可以得到小于target的最大值。每次更新下这两个值即可。
|
|