LeetCode 刷題 1 兩數之和

2021-10-01 11:24:31 字數 1555 閱讀 2917

題目描述:

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

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

測試示例:

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

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

所以返回 [0, 1]

拓展:列表與字典常見操作的複雜度

operation

big-o

index

o(1)

o(1)

popo(1)

pop(i)

o(n)

insert(i, item)

o(n)

delo(n)

iteration

o(n)

contains / in

o(n)

sort

o(n log n)

multiply

o(nk)

get slice

o(k)

del slice

o(n)

set slice

o(n + k)

reverse

o(n)

concatenate

o(k)

operation

big-o

copy

o(n)

get item

o(1)

set item

o(1)

delo(1)

contains / in

o(1)

iteration

o(n)

解題思路:

判斷乙個元素是否在另乙個集合(字串、陣列、字典等)中時,字串和陣列的時間複雜度為 o(n),字典的時間複雜度為 o(1),因此在設計演算法時應盡量使用字典作為存放資料的手段。

回到原題,我們只需要遍歷一次陣列即可,時間複雜度為 o(n),具體實現如下:

class

solution

:def

twosum

(self, nums, target)

: d =

# d 的存放格式為

for i in

range

(len

(nums)):

if target - nums[i]

in d:

# 跳出迴圈條件為當前差值存在於字典中

return

[d[target - nums[i]

], i]

d[nums[i]

]= i # 如果原陣列存在相同數如 [3, 3],則將該鍵值更新為後乙個相同數的角標

return

leetcode 執行結果:

leetcode刷題 1 兩數之和

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

leetcode刷題1 兩數之和

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

leetcode刷題 兩數之和(1)

本人成績差 基礎差 數學差 無演算法 特此建立此文件以自勉學習python,給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7...