力扣1 兩數之和

2021-09-26 19:30:38 字數 2022 閱讀 5745

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

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

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

所以返回 [0, 1]

方法一:窮舉法,時間複雜度o(n^2)

兩層for迴圈查詢兩個數,檢視和是否為sum。

c++:

class solution 

;//儲存下標號

for(

int i=

0;i<

sizeof

(nums)/2

;i++

)for

(int j=i+

1;j<

sizeof

(nums)

;j++)if

(nums[i]

+nums[j]

== target)

return1;

}};

python:

class

solution

(object):

deftwosum

(self, nums, target)

:"""

:type nums: list[int]

:type target: int

:rtype: list[int]

"""res=

for i in

range

(len

(nums)):

for j in

range

(i+1

,len

(nums)):

if nums[i]

+nums[j]

==target:

(nums[i]

,nums[j]))

return res

方法二:排序後,首尾相加,時間複雜度o(nlogn)

排序後,定義兩個指標,乙個指向陣列頭,乙個指向陣列尾。

一次遍歷陣列,出口為兩指標相遇。

兩數和==target,則查詢成功;和》target,尾指標前移;和

else

if(nums[i]

+nums[j]

>target) j--

;else i++;}

return res;}}

;python:

方法二:雜湊表,時間複雜度o(n)

插入雜湊表的同時尋找另乙個數是否已經在雜湊表中

class solution );

return res;

} hash[nums[i]

]=i;

}return res;}}

;

class

solution

(object):

deftwosum

(self, nums, target)

:"""

:type nums: list[int]

:type target: int

:rtype: list[int]

"""hashmap=

for i,num in

enumerate

(nums)

: another=target-num

if another in hashmap:

return

[hashmap[another]

,i] hashmap[num]

=i return

none

力扣 1 兩數之和

方法一 暴力遍歷 時間複雜度o n 2 執行超時 for i in range len nums for j in range i 1,len nums res nums i nums j if res target return i,j 方法二 時間複雜度o n for i in range le...

力扣 1 兩數之和

在該題中 很容易想到用暴力法來解決 直接進行n 2次尋找 此時 時間複雜度很高 而要降低時間複雜度 即減少查詢次數 可以用hashmap 儲存num i i 降低了尋找可能存在的對應數字的次數 mapmap new hashmap for int i 0 i nums.length i for in...

力扣1 兩數之和

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