Python LeetCode 1 兩數之和

2021-09-14 01:49:02 字數 1661 閱讀 7072

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

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

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

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

所以返回 [0, 1]

solution 1:(遍歷列表,對於當前的數字,我們需要找的另外乙個數字為target-current_num,即在除了當前數字之外的新列表中尋找另外乙個數字是否存在,返回兩數的index)

class

solution_1()

:def

twosum

(self, nums, target)

:'''

:type nums: list[int]

:type target: int

:rtype: list[int]

'''for i in nums:

j = target - i

start_index = nums.index(i)

next_index = start_index +

1 temp_nums = nums[next_index:

]if j in temp_nums:

return

[start_index, next_index + temp_nums.index(j)

]

solution_1 = solution_1(

)print

(solution_1.twosum([2

,7,1

,9],

11))

[0, 3]
solution 2:(新建乙個字典,遍歷列表,判斷target-current_num是否在字典中,如果不在,就把當前數字和其index存入字典;若在,則返回字典中在的數字的index以及current_num的index)

class

solution_2()

:def

twosum

(self, nums, target)

:'''

:type nums: list[int]

:type target: int

:rtype: list[int]

'''dict_nums =

for i, num in

enumerate

(nums)

:if target - num not

in dict_nums:

dict_nums[num]

= i else

:return

[dict_nums[target - num]

, i]

solution_2 = solution_2(

)print

(solution_2.twosum([10

,12,4

,8],

18))

[0, 3]

python leetcode 1 兩數之和

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

1 兩數之和 Python LeetCode

剛開始接觸演算法方面,好多都不懂,打算每刷一題就整理一下 給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 解法一 剛開...

python leetcode 最大回文數

直接暴力求解時間超出,選取manacher演算法 class solution def longestpalindrome self,s t join s 前後插入 是為了防止越界,不需要進行邊界判斷 n len t p 0 n 每一處的回文半徑 c r 0 r為當前訪問到的最右邊的值,c為此時對稱...