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 ...