LeetCode 1 兩數之和

2021-08-17 06:00:32 字數 1553 閱讀 5810

給定乙個整數數列,找出其中和為特定值的那兩個數。

你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。

示例:

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

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

所以返回 [0, 1]

step 1:

class solution(object):

def twosum(self, nums, target):      

"""                                  

:type nums: list[int]

:type target: int

:rtype: list[int]

"""list_len = len(nums)

for i in range(list_len):

for j in range(i+1,list_len):

if nums[i] + nums[j] == target:

return [i,j]

q:最後乙個測試用例會超時,窮舉法,迴圈了兩次,時間複雜度o(n*n)

step2:這裡是先生成乙個雜湊表(字典),然後迴圈過程中判斷當前元素和雜湊表(字典)中的資料相加是否滿足條件,

遍歷nums,遍歷過程中判斷當前元素和雜湊表(字典)中的值相加能不能滿足要求,也就是target-當前元素的值在雜湊表(字典)中是否存在,如果存在,就返回2個索引(注意是return[**,index]),如果不存在,那麼當前元素存入雜湊表(字典)。

class solution:

def twosum(self, nums, target):

""":type nums: list[int]

:type target: int

:rtype: list[int]

"""dic = dict()

for index,value in enumerate(nums):

sub = target - value

if sub in dic:

return [dic[sub],index]

else:

dic[value] = index

筆記:1、     

twosum函式的呼叫:

s = solution()

print s.twosum([3,2,4], 6)

2、    

enumerate的用法:

enumerate()是python的內建函式,enumerate在字典上是列舉、列舉的意思

對於乙個可迭代的(iterable)/可遍歷的物件(如列表、字串),enumerate將其組成乙個索引序列,利用它可以同時獲得索引和值

例如:nums = [2, 7, 11, 15]

for index, value in enumerate(nums):

print index, value

>>>

0 21 7

2 11

3 15

from:

leetcode 1 兩數之和

1.兩數之和 這道題和程式設計之法上面的題目有以下幾個不同 1 題目所給定的陣列是無序的,程式設計之法裡面是預設有序的 2 要求輸出原陣列的序號,如果用乙個結構體維護陣列下標,那麼需要o n 的空間,顯然不是最好的方法 3 題目中包含負數,之前想用數值直接表示陣列下標,陣列值為原來的真正陣列下標,但...

leetcode 1 兩數之和

給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 class solution for int i 0 ...

leetcode1 兩數之和

public int twosum int nums,int target return result else private static boolean checknum int nums,int target,listlist,int size,boolean issum if issum ...