題目:
給定乙個整數陣列nums
和乙個目標值target
,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
一開始沒什麼想法,就只想到了乙個個比較,也就是暴力解法。
class solution(object):
def twosum(self, nums, target):
""":type nums: list[int]
:type target: int
:rtype: 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]
複雜度分析:
時間複雜度:
空間複雜度:
檢視答案後,可以用雜湊表來優化演算法。使用字典將陣列索引與值對應起來,查詢字典是雜湊查詢,速度較快。
class solution(object):
def twosum(self, nums, target):
""":type nums: list[int]
:type target: int
:rtype: list[int]
"""dic = {}
for i, v in enumerate(nums):
if target-v in dic:
return [dic[target-v], i]
dic[v] = i
複雜度分析:
時間複雜度:
空間複雜度:所需的額外空間取決於雜湊表中儲存的元素數量,該表中儲存了 n個元素。
leetcode刷題記錄 1 簡單
題目 給定乙個二叉樹,返回所有從根節點到葉子節點的路徑。說明 葉子節點是指沒有子節點的節點。param root return var binarytreepaths function root const res if root.left root.right binarytreepathsdee...
leetcode刷題記錄
我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...
LeetCode刷題記錄
動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...