1. 程式人生 > >(python)給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數--演算法

(python)給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數--演算法

1、使用最容易理解的遍歷陣列進行查詢

def solution(nums,target):
	#如果列表長度小於2,則直接結束
	if len(nums) < 2:
            return
        #兩次迴圈列表,分別對列表中的所有可能的數字進行相加
        #迴圈兩次列表對應的時間複雜度為O(n²)
        for i in range(0, len(nums) - 1):
            for j in range(i+1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]

2、使用雜湊表,通過以空間換取速度的方式,我們可以將查詢時間從 O(n)降低到 O(1)
在python中列表字典的即為雜湊型別

def solution(nums,target):
	#新建立一個空字典用來儲存數值及其在列表中對應的索引
	dict1 = {}
	#遍歷一遍列表對應的時間複雜度為O(n)
        for i in range(0, len(nums)):
            #相減得到另一個數值
            num = target - nums[i]
            #如果另一個數值不在字典中,則將第一個數值及其的索引報錯在字典中
            #因為在字典中查詢的時間複雜度為O(1),因此總時間複雜度為O(n) 
            if num not in dict1:
                dict1[nums[i]] = i
            #如果在字典中則返回
            else:
                return [dict1[num], i]