LeetCode(python3) 1 兩數之和

2021-10-24 15:23:55 字數 757 閱讀 3469

思路:主要思路就是用target減去列表中的每乙個元素,檢視其差值是否在剩餘的列表中,如果在則獲取下標即可

注意:需要注意的是需要避免重複的情況,例如target:6, nums:[3,3] 正確答案應該是[0,1]或[1,0]而不是[0,0]或[1,1]

class

solution

:# v1.0版本(後續會優化)

deftwosum

(self, nums, target)

:# 首先迴圈列表個數次

for x in

range

(len

(nums)):

# 用target減去當前迴圈的元素

tmp = target - nums[x]

# 判斷相減得到的值是否在列表中

if tmp in nums:

# 在的話就獲取下標

y = nums.index(tmp)

# 判斷下標是否和當前元素相同,相同則不能採用

if y == x:

continue

return x, y

總結:這個題通常來說最簡單的就是通過暴力演算法來做,通過雙重迴圈來使每乙個元素與其他元素進行相加,在於target進行比較,相等即可。另外一種做法就是上面這種,這種思路上比較取巧,只需要一次迴圈就能得到結果。

優化:優化的地方也還有(針對python),就是將儲存的列表list轉為字典,因為字典的查詢效率是遠大於list的,但是記憶體消耗會比list高一些

leetcode python3 整數轉羅馬數字

1.思路 將數字分解成千位數 百位數 個位數,對不同的位數中分3個階段進行討論 9的 5 8之間的 4的 1 3之間的。對於不同的分位數和階段加上不同的符號處理 2.class solution def inttoroman self,num str if int num 1000 0 for i ...

leetcode python3演算法 島嶼個數

1.題目描述 給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1 示例 2 輸入 11000 11000 ...

單排leetcode python3 兩數相加

給定兩個非空鍊錶來代表兩個非負數,位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將這兩數相加會返回乙個新的鍊錶。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。示例 輸入 2 4 3 5 6 4 輸出 7 0 8原因 342 465 807class listnode def init...