2019-03-29補(bǔ)昨天作業(yè)兩數(shù)之和2 有序數(shù)組

給定一個(gè)已按照升序排列的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。

函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值 index1 和 index2,其中 index1?必須小于?index2。

說明:

返回的下標(biāo)值(index1 和 index2)不是從零開始的。

你可以假設(shè)每個(gè)輸入只對應(yīng)唯一的答案,而且你不可以重復(fù)使用相同的元素。

示例:

輸入:numbers = [2, 7, 11, 15], target = 9輸出:[1,2]解釋:2 與 7 之和等于目標(biāo)數(shù) 9 。因此 index1 = 1, index2 = 2 。


這道題與昨天的相比增加了一點(diǎn)難度,測試用例比昨天的復(fù)雜了很多。

在昨天代碼的基礎(chǔ)上做了一些修改,先使用集合去重,然后再查找來提升運(yùn)行速度。

class Solution:

? ? def twoSum(self, numbers: List[int], target: int) -> List[int]:

? ? ? ? l = set(numbers)

? ? ? ? for i in l:

? ? ? ? ? ? ll = []

? ? ? ? ? ? i = numbers.index(i)

? ? ? ? ? ? ll.append(i+1)

? ? ? ? ? ? if target-numbers[i] in set(numbers[i+1:]):

? ? ? ? ? ? ? ? for j in range(i+1,len(numbers)):

? ? ? ? ? ? ? ? ? ? if numbers[j] == target-numbers[i] :

? ? ? ? ? ? ? ? ? ? ? ? ll.append(j+1)

? ? ? ? ? ? ? ? ? ? ? ? return ll

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容