zoukankan      html  css  js  c++  java
  • 牛渴望每日一练

    #
    # 
    # @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向右移动一个单位,下面同理。
      
  • 相关阅读:
    [模板] AC自动机
    U32670 小凯的数字 数学
    P1993 小K的农场 差分约束系统
    P2532 [AHOI2012]树屋阶梯 卡特兰数
    [模板] manacher
    Dynamic Rankings
    CQOI2015 任务查询系统
    [POI2014]KUR-Couriers
    JSOI2008 火星人
    ZJOI2006 书架
  • 原文地址:https://www.cnblogs.com/nenu/p/14693507.html
Copyright © 2011-2022 走看看