Leetcode做題記錄 16 最接近的三數之和

2021-10-18 03:16:39 字數 1268 閱讀 6304

與三數之和(類似,本題同樣可以使用雙指標的方式來解題。外層迴圈一次遍歷,裡層while迴圈以left=right為邊界條件,找出最接近的三數和。

class

solution

:def

threesumclosest

(self, nums: list[

int]

, target:

int)

->

int:

#排序 nums.sort(

) n =

len(nums)

#如果元素少於三個,返回值為空

if n <3:

return

none

#給定返回初值,如果給定的初值為0的話有可能會影響結果

re = nums[0]

+ nums[1]

+ nums[n -1]

#外層迴圈,一次遍歷

for i in

range

(n):

#跳過重複項

if i >

0and nums[i]

== nums[i -1]

:continue

now = nums[i]

#左右指標

left = i +

1 right = n -

1while left < right:

temp = now + nums[left]

+ nums[right]

if temp > target:

right -=

1#三數之和大於目標值,右指標左移,並判斷re和temp誰更接近target

ifabs

(re - target)

>

abs(temp - target)

: re = temp

if temp < target:

left +=

1#三數之和小於目標值,左指標右移動,並判斷re和temp誰更接近target

ifabs

(re - target)

>

abs(temp - target)

: re = temp

#如果碰到相等的,直接返回

if temp == target:

return temp

return re

leetcode做題記錄0010

只是為了記錄一下,不求多快,也不深究。會簡要描述思路,中不寫注釋。如碰到不會做的用了別人 會在部落格中標出。一碰到難度是困難的就不會做了。用動態規劃 dp i j 代表了s的前i個字元和p的前j個字元是否匹配,算上0的話,顯然dp的大小是 s.length 1 p.length 1 dp 0 0 兩...

leetcode做題記錄0014

只是為了記錄一下,不求多快,也不深究。會簡要描述思路,中不寫注釋。如碰到不會做的用了別人 會在部落格中標出。第一遍提交擊敗37 的使用者,一模一樣的 又提交了一遍,擊敗82 的使用者。所以這個到底有啥意義。陣列長度為0或1直接return。寫乙個方法判斷所有字串第num個字元是否相同。找到陣列裡最短...

leetcode做題記錄0050

只是為了記錄一下,不求多快,也不深究。會簡要描述思路,中不寫注釋。如碰到不會做的用了別人 會在部落格中標出。直接乙個乙個乘的話會超時,試過了。這題有點像數學題。3 193 319可以這樣做 3 19 324 21 2 0 32 4 32 1 32 03 3 3 cdot 3 cdot 3 319 3...