Leetcode 16. 最接近的三數(shù)之和

題目描述:

給定一個包括 n 個整數(shù)的數(shù)組 nums 和 一個目標(biāo)值 target。找出 nums 中的三個整數(shù),使得它們的和與 target 最接近。返回這三個數(shù)的和。假定每組輸入只存在唯一答案。

例如,給定數(shù)組 nums = [-1,2,1,-4], 和 target = 1.

與 target 最接近的三個數(shù)的和為 2. (-1 + 2 + 1 = 2).

題目分析:

首先說明,這個代碼是別人的,我寫的太low了,就不拿出來了。

數(shù)組題基本上都是套路了,看到數(shù)組沒思路你就給它排個序,排完再想想就有點(diǎn)眉目了。如果你做過三數(shù)之和這道題,那你基本上做這道題也就差不多了。還是雙指針?排序的老套路,老老實(shí)實(shí)做就完事了。當(dāng)然由于是最接近的三數(shù)之和,所以你需要維護(hù)一個變量去保存每次三個數(shù)的和。

code:

class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        # 數(shù)組題如果沒思路記得排序一下就有思路了?。。?        # 排除一些特定問題減少計算
        # 如果只有3個數(shù),那直接返回這三個數(shù)的和
        if len(nums) == 3:
            return sum(nums)
        nums = sorted(nums)
        # 如果最小的和大于目標(biāo),那返回最小的和
        if sum(nums[:3]) >= target:
            return sum(nums[:3])
        # 如果最大的和小于目標(biāo),那返回最大的和
        if sum(nums[-3:]) <= target:
            return sum(nums[-3:])

        cur = nums[0] + nums[1] + nums[-1]

        for i in range(0, len(nums) - 2):
            # 避免重復(fù)計算
            if i > 0 and nums[i] == nums[i - 1]:
                continue
            j = i + 1
            k = len(nums) - 1

            while j < k:
                res = nums[i] + nums[j] + nums[k]
                if abs(res - target) < abs(cur - target):
                    cur = res
                elif res == target:
                    return target
                elif res < target:
                    j = j + 1
                else:
                    k = k - 1
        return cur
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 給定一個包括 n 個整數(shù)的數(shù)組 nums 和 一個目標(biāo)值 target。找出 nums 中的三個整數(shù),使得它們的和...
    LeeYunFeng閱讀 745評論 0 50
  • 題目:16. 最接近的三數(shù)之和 難度:中等 分類:數(shù)組 解決方案:雙指針 今天我們學(xué)習(xí)第16題最接近的三數(shù)之和,這...
    編程半島閱讀 458評論 0 1
  • 題目描述 給定一個包括個整數(shù)的數(shù)組和 一個目標(biāo)值。找出 中的三個整數(shù),使得它們的和與最接近。返回這三個數(shù)的和。假定...
    topshi閱讀 190評論 0 1
  • 教育也許是這個世間最困難的事情吧!昨天和一個大姐聊天(她女兒在山東省實(shí)驗(yàn)中學(xué)上過),她給我傳授了好多讓孩子提分的技...
    7f0405b4c186閱讀 186評論 0 0
  • 《七絕·詠竹》 柳若水作 虛心向上自清高,具體有節(jié)貫?zāi)┥摇?相伴松菊三徑客,閑云野鶴樂荒郊。
    柳若水閱讀 5,449評論 132 169

友情鏈接更多精彩內(nèi)容