leetcode python 三數之和

2021-09-19 13:51:20 字數 1482 閱讀 7845

給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

注意:答案中不可以包含重複的三元組。

例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為:

[ [-1, 0, 1],

[-1, -1, 2]

]

躲得過[0,0,0],躲得過[0,0,0,0],躲不過超時啊

1.將陣列排序

2.定義三個指標,i,j,k。遍歷i,那麼這個問題就可以轉化為在i之後的陣列中尋找nums[j]+nums[k]=-nums[i]這個問題,也就將三數之和問題轉變為二數之和---(可以使用雙指標)

class solution:

def threesum(self, nums: list[int]) -> list[list[int]]:

nums.sort()

result =

for i in range(len(nums)):

if nums[i] > nums[i-1] or i == 0:

l = i+1

r = len(nums)-1

while(l0:

r-=1

else:

l+=1

return result

執行用時 : 1036 ms, 在3sum的python3提交中擊敗了75.65% 的使用者

記憶體消耗 : 16.7 mb, 在3sum的python3提交中擊敗了74.16% 的使用者

Leetcode Python3 實現三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 class solu...

LeetCode Python 打家劫舍I

你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...

leetcode Python編碼練習

貪心演算法 1.環形路上有n個加油站,第i個加油站的汽油量是gas i 你有一輛車,車的油箱可以無限裝汽油。從加油站i走到下乙個加油站 i 1 花費的油量是cost i 你從乙個加油站出發,剛開始 的時候油箱裡面沒有汽油。求從哪個加油站出發可以在環形路上走一圈。返回加油站的下標,如果沒有答案的話返回...