最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

python算法-快速尋找滿足條件的兩個數(shù)

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:28:25
文檔

python算法-快速尋找滿足條件的兩個數(shù)

python算法-快速尋找滿足條件的兩個數(shù):題目前提是一定存在這樣兩個數(shù)解法一就不寫了...一般想不到吧一開始想到的是解法二最后的用hash表(其實(shí)是想到創(chuàng)建一個跟target一樣大的數(shù)組啦..存在就寫入index,但是要全部找出,那得二維數(shù)組,但是后面想到target要是很大的話,是不是浪費(fèi)空間了...所以
推薦度:
導(dǎo)讀python算法-快速尋找滿足條件的兩個數(shù):題目前提是一定存在這樣兩個數(shù)解法一就不寫了...一般想不到吧一開始想到的是解法二最后的用hash表(其實(shí)是想到創(chuàng)建一個跟target一樣大的數(shù)組啦..存在就寫入index,但是要全部找出,那得二維數(shù)組,但是后面想到target要是很大的話,是不是浪費(fèi)空間了...所以

題目前提是一定存在這樣兩個數(shù)

解法一就不寫了...一般想不到吧

一開始想到的是解法二最后的用hash表

(其實(shí)是想到創(chuàng)建一個跟target一樣大的數(shù)組啦..存在就寫入index,但是要全部找出,那得二維數(shù)組,但是后面想到target要是很大的話,是不是浪費(fèi)空間了...所以改成Dict)

后面發(fā)現(xiàn)題目只要求給出兩個數(shù)就好了啊- -

擴(kuò)展問題比較有意思

找三個應(yīng)該不難,其它還不清楚,有想再補(bǔ)充...

1.二維數(shù)組

def find_pair(A, target):
 B = [[] for i in range(target + 1)]
 for i in range(0, len(A)):
 if A[i] <= target:
 B[A[i]].append(i)
 for i in range(0, target / 2 + 1):
 if len(B[i]) != 0 and len(B[target - i]) != 0:
 print(i, B[i], target-i, B[target-i])
 
if __name__ == "__main__":
 A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10]
 find_pair(A, 9)

2.字典

def find_pair(A, target):
 B = {}
 for i in range(0, len(A)):
 if A[i] <= target:
 if not B.has_key(A[i]):
 B[A[i]] = [i]
 else:
 B[A[i]].append(i)
 for i in range(0, target / 2 + 1):
 if B.has_key(i) and B.has_key(target-i):
 print(i, B[i], target-i, B[target-i])
 
if __name__ == "__main__":
 A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10]
 find_pair(A, 9)

3.這種方法都已經(jīng)重新排序了,不知道書上還返回索引有什么意義...排序偷懶直接用內(nèi)置的啦...

def find_pair(A, target):
 A.sort()
 i, j = 0, len(A) - 1
 while i < j:
 s = A[i] + A[j]
 if s == target:
 print(i, A[i], j, A[j])
 i += 1
 j -= 1
 elif s < target:
 i += 1
 else:
 j -= 1
 
if __name__ == "__main__":
 A = [0, 1, 1, 2, 11, 8, 3, 4, 5, 6, 7, 8, 9, 10]
 find_pair(A, 9)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

python算法-快速尋找滿足條件的兩個數(shù)

python算法-快速尋找滿足條件的兩個數(shù):題目前提是一定存在這樣兩個數(shù)解法一就不寫了...一般想不到吧一開始想到的是解法二最后的用hash表(其實(shí)是想到創(chuàng)建一個跟target一樣大的數(shù)組啦..存在就寫入index,但是要全部找出,那得二維數(shù)組,但是后面想到target要是很大的話,是不是浪費(fèi)空間了...所以
推薦度:
標(biāo)簽: 滿足 個數(shù) 找出
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top