題目:給定乙個整數陣列 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為此時對稱...