• 16.最接近三数之和(leetcode)


    给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

    开心,这题用15题的方法一遍过。

    相同点:

      1. 排除 len(nums) < 3 的情况

      2. 先排序

      3. 三指针,两个循环

      4. 同样的句子来List去重 while i<j and nums[i] == nums[i-1]: i+=1

     

    不同点:

      1. k 这层循环要走完 |   而不是走到nums[k] > 0就停止了

      2. 存储答案的是一个List,存储  [差值,答案]  |  而不是之前的List Of Lists

      3. 迭代的时候不是与0比较,而是与target比较

    收获:

      温习了双指针,与去重循环 while i<j and nums[i] == nums[i-1]: i+=1

    class Solution:
        def threeSumClosest(self, nums: List[int], target: int) -> int:
            if len(nums)<3:
                return None
            nums.sort()
            resAndGap = [0,float('inf')]
            k = 0
            while k < len(nums):
                i,j = k+1,len(nums) -1
                while i<j:
                    s = nums[k] + nums[i] + nums[j]
                    resAndGap = [s,abs(s-target)] if  abs(s-target) < resAndGap[1] else  resAndGap
                    if s == target:
                        return target
                    elif s < target:
                        i += 1
                        while i<j and nums[i] == nums[i-1] : i += 1
                    elif s > target:
                        j-= 1
                        while i < j and nums[j] == nums[j+1]: j-=1
                k += 1
                while k < len(nums) and nums[k] == nums[k-1]: k += 1 
            return resAndGap[0]
  • 相关阅读:
    Apache Doris 编译
    Jmeter(二十五)
    Jmeter(二十四)
    Jmeter(二十三)
    Jmeter(二十二)
    Jmeter(二十一)
    Jmeter(二十)
    jmeter-“java.net.SocketException: Socket closed“解决方法
    JMeter测试出现java.net.SocketException: Permission denied: connect 解决方案
    jmeter压测org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:8999 [/127.0.0.1] fail
  • 原文地址:https://www.cnblogs.com/ChevisZhang/p/12242640.html
Copyright © 2020-2023  润新知