題目:
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.
與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).
**:class solution:
def threesumclosest(self, nums: list[int], target: int) -> int:
nums.sort() #先將原陣列進行排序
res = float("inf") #res先賦值乙個正無窮大的數
for k in range(len(nums) - 2): #遍歷陣列,後面還有i和j指標,因此只用遍歷到len(nums) - 2
if k > 0 and nums[k] == nums[k - 1]: continue #如果有重複的數字,則直接跳過,避免重複答案
i, j = k + 1, len(nums) - 1 #雙指標法,分別從兩側遍歷k後面的陣列
while i < j:
tmp = nums[k] + nums[i] + nums[j] #計算三個數的和
if abs(tmp - target) < abs(res - target): res = tmp #判斷是否要更新全域性結果
if tmp > target: j -= 1 #更新下標,如果當前值比target大,j減小
elif tmp < target: i += 1 #更新下標,如果當前值比target小,i增加
else: return target #當前值等於target,直接返回,這個就是最小值
return res
力扣 16 最接近的三數之和
16.最接近的三數之和 給你乙個長度為n的整數陣列nums和 乙個目標值target。請你從nums中選出三個整數,使它們的和與target最接近。假定每組輸入只存在恰好乙個解。示例 1 輸入 nums 1,2,1,4 target 1 輸出 2 解釋 與 target 最接近的和是 2 1 2 1...
16 最接近的三數之和 排序 雙指標
自己做這道題,除了三重迴圈遍歷,別的什麼方法都想不出來。哪怕是剛做過的和這道題幾乎一樣的十五題。心態 順便說一下,csdn這個 編輯真的很難用,複製貼上過來的 縮排不整齊,真的忍了很久了。暴力解法 三重迴圈 class solution else 不能寫作兩個if。class solution if...
力扣第16題 最接近的三數之和
給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。示例 輸入 nums 1,2,1,4 target 1 輸出 2 解釋 與 target 最接近的和是 2 1 2...