給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。
class solution:
def twosum( sself,nums, target):
""":type nums: list[int]
:type target: int
:rtype: list[int]
"""i=0
j=1for num1 in nums:
i=i+1
j=ifor num2 in nums[j:]:
j=j+1
if num1+num2==target:
return [i-1,j-1]
這種方法最容易想到,兩個for迴圈就可及解決,但是時間複雜度太高,leecode沒給過
解法2:
但是時間長,記憶體占用多
解法3:
這裡利用了字典來查詢,速度提公升很大,與雜湊表的原理有關
class solution:
def twosum(self,nums,target):
""":type nums: list[int]
:type target: int
:rtype: list[int]
"""dict1 = {}
for i, num in enumerate(nums):
dict1[num] = i # 調換乙個順序
for i, num in enumerate(nums):
j=dict1.get(target-num)
if j!=none and i!=j :
return [i,j]
關於enumerate函式
效果如下:
class solution:
def twosum(self,nums,target):
""":type nums: list[int]
:type target: int
:rtype: list[int]
"""dict1 = {}
for i, num in enumerate(nums):
j=dict1.get(target-num)
if j!=none and j!=i:
return[j,i]
dict1[num] = i # 調換乙個順序。在後面防止字典鍵值有重複
這個就只用到了乙個迴圈
但效果、、、
leecode 兩數之和
第一種 暴力法 class solution throw newillegalargumentexception no two sum solution 時間複雜度 o n 2 空間複雜度 o 1 第二種 利用hash表提高時間效率 class solution for int i 0 i nums...
LeetCode1 兩數之和(四種解法)
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...
Leecode 1 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素 示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 ...