牛渴望-每日一练

#
# 
# @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向右移动一个单位,下面同理。
  
posted @ 2021-04-23 14:05  YBINing  阅读(63)  评论(0编辑  收藏  举报