LeetCode刷題 TwoSum 親測有效

2021-10-25 04:21:37 字數 2758 閱讀 5900

給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

解題思路:利用兩個迴圈解決

**

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:for i in

range

(len

(nums)):

for j in

range

(i+1

,len

(nums)):

if nums[i]

+ nums[j]

== target:

return

[i,j]

結果and總結

此處用到了兩個迴圈

方法一:

解題思路:

找到num2 == target - num1 是否在list中,然後運用兩個方法:

**

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:for i in

range

(len

(nums)

: num1 = nums[i]

num2 = target - num1

if num2 in nums:

#如果num2=num1,且在nums**現了一次,說明找到num1本身。

if(num1 == num2)

&(nums.count(num2)==1

):continue

return

[i,nums.index(num2,i+1)

]#index(num2,i+1)是從num1後的序列找num2位置

結果and總結

此處用到了乙個迴圈

方法二:

解題思路:在方法一的基礎上,num2的查詢不需要每次從nums查詢一遍,可以按照切片的思想從num1之前或者之後查詢就行。這次從num1之前找.

**

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

:for i in

range(1

,len

(nums)):

temp = nums[

:i] num1 = target - nums[i]

if num1 in temp:

j = temp.index(num1)

return

[j,i]

結果and總結
這個演算法先找到列表[2,7,11,15]中的7,再找到2;所以return[j,i]時先返回j,再返回i

方法一:

解題思路:利用字典模擬雜湊求解,遍歷列表同時查字典

class

solution

:def

twosum

(self, nums: list[

int]

, target:

int)

-> list[

int]

: dct =

for i, n in

enumerate

(nums)

:if target-n in dct:

return

[dct[target - n]

, i]

dct[n]

= i #構造字典

結果and總結

利用字典解決該問題最簡單,遍歷列表同時查字典,但也消耗了一定記憶體

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...