力扣刷題記錄 陣列 簡單 1 167兩數之和

2021-09-25 20:39:47 字數 2212 閱讀 6829

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

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

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

因為 nums[0] + nums[1] = 2 + 7 = 9,所以返回 [0, 1]

class

solution

(object)

: def twosum

(self, nums, target)

:"""

:type nums: list[int]

:type target: int

:rtype: list[int]

""" for i in

range

(len

(nums)):

for j in

range

(i+1

,len

(nums)):

if(nums[i]

+ nums[j]

)== target:

return

[i,j]

return none

給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。

函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。

說明:返回的下標值(index1 和 index2)不是從零開始的。

假設每個輸入只對應唯一的答案,而且不可以重複使用相同的元素。

輸入: numbers = [2, 7, 11, 15], target = 9

輸出: [1,2]

解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

解答1

class

solution

(object)

: def twosum

(self, numbers, target)

:"""

:type numbers: list[int]

:type target: int

:rtype: list[int]

""" for i in

range(0

,len

(numbers)):

rest = target-numbers[i]

numbers_rest = numbers[i+1:

]if rest in numbers_rest:

return

[i+1

,numbers_rest.

index

(rest)

+i+2

] # numbers_rest.

index

(rest)

+i+1是rest在numbers裡的索引

return none

遍歷列表,對當前數numbers[i],判斷target-numbers[i]是否在剩下的列表元素內。

這一方法時間複雜度太高,for迴圈遍歷列表o(n),判斷元素是否在列表內o(n),查詢索引o(n),整個演算法o(n^3)

解答2 利用雙指標

class

solution

(object)

: def twosum

(self, numbers, target)

:"""

:type numbers: list[int]

:type target: int

:rtype: list[int]

""" # 有序陣列

l =0 r =

len(numbers)-1

while lif numbers[l]

+numbers[r]

==target:

return

[l+1

,r+1

] elif numbers[l]

+numbers[r]

>target:

r -=

1else

: l +=

1return none

力扣刷題記錄 陣列 簡單 896單調數列

如果陣列是單調遞增或單調遞減的,那麼它是單調的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞增的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞減的。當給定的陣列 a 是單調陣列時返回 true,否則返回 false。class solution object def ...

力扣刷題記錄05

題目分類 二分查詢 時間 2020 09 09 題目一 兩數之和 兩數之和 ii 輸入有序陣列 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 ind...

力扣刷題記錄2

第一題是每日一題的簡單題。需要記的並不多,一是用迭代器對vector的一些基本操作。可以參考這裡 for vector iterator iter num.begin iter num.end iter 另外是快排的思想。這種思想實用性很廣,即使不需要排序,在找出最大的k個數,對陣列進行分割 以中間...