求陣列兩個數的和的索引

2022-05-17 14:59:20 字數 745 閱讀 7537

做了一道題,有乙個有序陣列a,包含n個元素[a1,a2,...,an],找出相加等於x的兩個數的下標

。我看到這道題,第乙個想法是,這兩個數肯定不止一樣的,不管它要求是返回乙個就行還是返回所有,我都返回所有。我用python語言實現,借鑑二分查詢法,複雜度nlogn,不知道有沒大神有更好的解法,我只能做到這了。**如下:

__author__ = 'weixin'

#-*- coding:utf-8 -*-

def findadd(list,num):

length = len(list)

indexlist =

for index,value in enumerate(list):

start = index

end = length

while startmid = int((start+end)/2)

if list[mid]+value < num:

start = mid+1

else:

end = mid

if list[start] + value == num and (start != index):

return indexlist

#測試**

list = [1,2,2,3,4,5,6,7,8]

print findadd(list,7)

執行結果

[(6, 0), (5, 1), (5, 2), (4, 3)] 正確

求陣列中相差最小的兩個數O N

基本思想 1.遍歷該陣列 找出該陣列中最小和最大值,則所求的兩個整數的差值一定小於等於max min 2.從頭開始 乙個乙個元素與 max min 2 比較,如果小於,則表示所求的兩個整數的差值介於min 到 a i 之間 更新max a i 如果大於,則表示所求的兩個整數的差值介於a i 到max...

交換兩個陣列使兩個陣列和的差最小

有兩個陣列a,b,大小都為n,陣列元素的值任意整形數,無序 要求 通過交換a,b中的元素,使 陣列a元素的和 與 陣列b元素的和 之間的差最小。求解思路 當前陣列a和陣列b的和之差為 a sum a sum b a的第i個元素和b的第j個元素交換後,a和b的和之差為 a sum a a i b j ...

交換兩個陣列使兩個陣列和的差最小

有兩個陣列a,b,大小都為n,陣列元素的值任意整形數,無序 要求 通過交換a,b中的元素,使 陣列a元素的和 與 陣列b元素的和 之間的差最小。求解思路 當前陣列a和陣列b的和之差為 a sum a sum b a的第i個元素和b的第j個元素交換後,a和b的和之差為 a sum a a i b j ...