zoukankan      html  css  js  c++  java
  • 39.leetcode16_3sum_cloest

    1.题目描述

    Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

    在数组S中找到三个数字的和最接近目标数字,返回这个和的值

        For example, given array S = {-1 2 1 -4}, and target = 1.
    
        The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
    

    2.题目分析

    先将数组排序。然后先固定一个元素,然后双指针分别从头尾遍历。遇见和等于目标数字的直接返回目标数字,否则继续遍历,找到最接近目标数字的值。

    3.解题思路

     1 class Solution(object):
     2     def threeSumClosest(self, nums, target):
     3         """
     4         :type nums: List[int]
     5         :type target: int
     6         :rtype: int
     7         """
     8         temp=2**31-1 #给temp一个最大值
     9         nums.sort() #nums列表排序
    10         l=len(nums)
    11         i=0
    12         while i<l-2:   
    13             left=i+1
    14             right=l-1
    15             while left<right:
    16                 sum=nums[i]+nums[left]+nums[right]
    17                 if sum==target: #sum与target相等,返回target
    18                     return target
    19                 else:
    20                     if abs(sum-target)<abs(temp-target): #如果当前sum更接近目标数字,temp为当前sum
    21                         temp=sum
    22                     if sum-target>0: #如果sum比目标数字大,右指针移动
    23                         right-=1
    24                     else: #否则左指针移动
    25                         left+=1
    26             i+=1
    27         return temp
  • 相关阅读:
    Unix Shell常用命令
    传输信号
    硬盘 光驱 跳线问题
    常见病毒类型
    Unix操作系统文件结构
    数字模拟信号 单双信道传输
    双绞线
    Unix操作系统目录存放内容
    EasyRecovery数据恢复工具
    什么叫做泛解析
  • 原文地址:https://www.cnblogs.com/19991201xiao/p/8470785.html
Copyright © 2011-2022 走看看