# # # @param num int整型一维数组 # @param target int整型 # @return int整型 # class Solution: def threeSumClosest(self , num , target ): # write code here num.sort() left=0 right=len(num)-1 mid = (left+right)//2 while left<mid and mid<right: res=num[left]+num[right]+num[mid] if res==target: return res if res<target: if left<mid-1: left+=1 else: mid+=1 else: if right>mid+1: right-=1 else: mid-=1 return res
题目描述
给出含有n个整数的数组s,找出s中和加起来的和最接近给定的目标值的三个整数。返回这三个整数的和。你可以假设每个输入都只有唯一解。 例如,给定的整数 S = {-10 20 10 -40}, 目标值 = 10.
最接近目标值的和为 2. (-10 + 20 + 10 = 20).
题解:此题我没有想出太好的办法,我的方法就是先排序后双向遍历,当左右指针都小于mid时我们开始进入循环,如果此时三值相加后是小于目标值,那么意味着我们需要向右移动,如何向右移动就要看下边的判断语句
如果left与mid中间隔有空隙那么让left向右移动一个位置,如果挨着那么让mid向右移动一个单位,下面同理。