給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
第一種思路:
雙重迴圈暴力解。
class
solution
(object):
deftwosum
(self, nums, target)
:"""
:type nums: list[int]
:type target: int
:rtype: list[int]
"""iflen
(nums)==0
:return
for index, item in
enumerate
(nums)
:for count in
range
(index+1,
len(nums)):
if item + nums[count]
== target:
return
[index, count]
第二種思路
用hashmap記錄之前出現的數字及下標,key是數字,val是下標。
class
solution
(object):
deftwosum
(self, nums, target)
:"""
:type nums: list[int]
:type target: int
:rtype: list[int]
"""hashmap =
for index, item in
enumerate
(nums)
:if hashmap.has_key(target - item)
:#如果鍵在字典dict裡返回true,否則返回false
return hashmap[target-item]
,index
hashmap[item]
= index
(1)enumerate() 函式
用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。
(2)python 字典{}
用法如下
dict.clear()
刪除字典內所有元素
dict.copy()
返回乙個字典的淺複製
dict.fromkeys(seq[, val])
建立乙個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值
dict.get(key, default=none)
返回指定鍵的值,如果值不在字典中返回default值
dict.has_key(key)
如果鍵在字典dict裡返回true,否則返回false
dict.items()
以列表返回可遍歷的(鍵, 值) 元組陣列
dict.keys()
以列表返回乙個字典所有的鍵
dict.setdefault(key, default=none)
和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default
dict.update(dict2)
把字典dict2的鍵/值對更新到dict裡
dict.values()
以列表返回字典中的所有值
pop(key[,default])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。
popitem()
返回並刪除字典中的最後一對鍵和值。
LeetCode Python 第n個醜數
挨個找的方法,效率比較低 def findkthugly k count 0 n 1 while true if isugly n count 1 if count k return n else n 1 def isugly number while number 2 0 number numbe...
LeetCode Python 60 第k個排列
給出集合 1,2,3,n 其所有元素共有 n 種排列。按大小順序列出所有排列情況,並一一標記,當 n 3 時,所有排列如下 123 132 213 231 312 321 給定 n 和 k,返回第 k 個排列。說明 示例 1 輸入 n 3,k 3 輸出 213 示例 2 輸入 n 4,k 9 輸出 ...
LeetCode Python 打家劫舍I
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...