題目:給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
解題原理:先用target減去陣列中乙個數得到的值之後遍歷陣列去尋找與這個值相等的元素。
我自己寫的暴力解法:
def
twosum
(nums, target)
:for j in
range(0
,len
(nums)):
a = target - nums[j]
for k in
range(0
,len
(nums)):
if k!= j:
if nums[k]
== a:
print
([j,k]
)nums =[1
,2,3
,4,5
]target =
6twosum(nums,target)
輸出為:
借鑑別人的字典寫法:
def
twosum
(nums, target)
: hashmap=
for ind,num in
enumerate
(nums)
: hashmap[num]
= ind #這裡num是值,ind是索引
for i,num in
enumerate
(nums)
: j = hashmap.get(target - num)
if i!=j:
print
([i,j]
)
nums =[1
,2,3
,4,5
]target =
6twosum(nums,target)
輸出一樣,第二種寫法時間複雜度小了很多。
補充:enumerate()函式相比range()優勢是可以同時返回陣列的下標和值。
LeetCode 解題之兩數之和
給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。輸入 2,7,11,15 9輸出 0,1 第一種解法是對該題的暴力求解方法,邏輯為遍歷陣列中的每乙個元素,並尋找是...
python 兩數之和
給定乙個整數陣列 nums和乙個整數目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。def twosum nums,tatget hashmap for ind,num in enumera...
leetcode兩數之和python
在編寫leecode上的演算法第一題 兩數之和 時,遇到了一些問題,如下 1.引數丟失 solution.twosum 2,3,4,5 8 typeerror twosum missing 1 required positional argument target 原因 沒有建立物件 解決 a so...