python解決兩個數之和等於給定目標值問題

2021-09-27 09:39:07 字數 1166 閱讀 4059

def twosum1(nums, target):

res =

newnums = nums[:] # 深拷貝原陣列到新陣列

newnums.sort() # 排序

left = 0 # 左指標

right = len(nums) - 1 # 右指標

while left < right:

if newnums[left] + newnums[right] == target:

for i in range(0, len(nums)):

if nums[i] == newnums[left]:

elif nums[i] == newnums[right]:

res.sort()

break

elif newnums[left] + newnums[right] < target:

left = left + 1

elif newnums[left] + newnums[right] > target:

right = right - 1

return (res[0] + 1, res[1] + 1)

if __name__ == '__main__':

nums = [3, 7, 10, 4, 5]

target = 11

print(twosum1(nums, target))

def towsum2(nums, target):

dict = {}

for i in range(len(nums)):

m = nums[i] # 當前待查詢的數字

if target - m in dict: # 判斷target - m是否存在字典中

return (dict[target - m] + 1, i + 1)

dict[m] = i

if __name__ == '__main__':

nums = [3, 7, 10, 4, 5]

target = 11

print(towsum2(nums, target))

注意:雜湊演算法解決查詢問題,不僅效率高、**少而且容易理解,查詢問題能用雜湊解決的,盡量用雜湊演算法

兩個數之和

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

兩個陣列之和

題目描述 給定兩個亂序陣列,長度分別為m,n,要求列印出和最大的k個數,和是由兩個陣列中各乙個陣列相加而得。輸入 每行數字短橫符 分割兩個陣列,冒號分割 引數k輸出 輸出為和最大得k個數,和是兩個陣列中各乙個數相加而得。樣例輸入 2,4,1,7,7 3,2,5,6,1,9 6 樣例輸出 16,16,...

求兩個數之和

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