LeetCode演算法題16 最接近的三數之和解析

2021-09-02 00:27:54 字數 1155 閱讀 1001

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

例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.

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

這個題和三數之和那個題基本一樣,甚至思想更簡單了一些,只需要設定乙個差值,每次三數相加時對比差值,如果更小就儲存三數之和,而且這個題不需要去掉重複項,遍歷的思路還是一樣,先排序,然後逐個遍歷,利用雙指標將之後剩餘數都遍歷一遍算加和再比價差值即可。

c++源**:

class

solution

if(sum;else j--;}

}return res;}}

;

python3源**:

class

solution

:def

threesumclosest

(self, nums, target)

:"""

:type nums: list[int]

:type target: int

:rtype: int

"""res =

sum(nums[0:

3]) diff =

abs(res-target)

nums.sort(

)for k in

range

(len

(nums)-2

):i = k+

1 j =

len(nums)-1

while ithreesum = nums[k]

+ nums[i]

+ nums[j]

ifabs

(threesum-target)

diff =

abs(threesum-target)

res = threesum

if threesumi +=

1else

: j -=

1return res

LeetCode刷題 接雨水

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 時間複雜度o n 空間複雜度o n int trap vector ...

leetcode刷題筆記16

面試題22.鍊錶中倒數第k個節點 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點。definition for s...

leetcode題 42 接雨水(困難)

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之後能接多少雨水。上面是由陣列 0,1,0,2,1,0,1,3,2,1,2,1 表示的高度圖,在這種情況下,可以接 6 個單位的雨水 藍色部分表示雨水 感謝 marcos 貢獻此圖。示例 輸入 0,1,0,2,1,0,1...