python如何實(shí)現(xiàn)數(shù)組元素兩兩相加
數(shù)組元素兩兩相加
count = 0
c2 = []
for i in range(len(c)):
if count == 0:
mm = c[i]
#print(mm)
#print(count)
if count == 1:
print(c[i])
value = c[i] + mm
c2 = np.append(c2,value)
count = 0
mm = 0
value = 0
continue
count = count + 1
c是原數(shù)組,我們?cè)O(shè)置一個(gè)count,當(dāng)count=0時(shí)我們不操作,count=1時(shí)我們把當(dāng)前元素與前一元素相加。
count=0其實(shí)相當(dāng)于奇數(shù),count=1相當(dāng)于偶數(shù)
求數(shù)組中兩兩相加等于20的組合(Python實(shí)現(xiàn))
題目
求數(shù)組中兩兩相加等于20的組合。
例:給定一個(gè)數(shù)組[1, 7, 17, 2, 6, 3, 14],這個(gè)數(shù)組中滿足條件的有兩對(duì):17+3=20, 6+14=20。
解析
分為兩個(gè)步驟:
- 先采用堆排序或快速排序?qū)?shù)組進(jìn)行排序,時(shí)間復(fù)雜度為O(nlogn)。
- 然后對(duì)排序的數(shù)組分別從前到后和從后到前進(jìn)行遍歷, 時(shí)間復(fù)雜度為O(n)。
假設(shè)從前到后遍歷的下標(biāo)為begin,從后到前遍歷的下標(biāo)為end。
- 當(dāng)arr[begin] + arr[end] < 20時(shí),滿足條件的數(shù)一定在[begin+1, end]之間;
- 當(dāng)arr[begin] + arr[end] > 20時(shí),滿足條件的數(shù)一定在[begin, end-1]之間;
- 當(dāng)arr[begin] + arr[end] = 20時(shí),找到一組符合條件的數(shù),剩下的組合一定在[begin-1, end-1]之間。
整個(gè)算法的時(shí)間復(fù)雜度為O(nlogn)。
Python實(shí)現(xiàn)
# -*- coding:utf-8 -*-
def quick_sort(arr, left, right):
"""快速排序"""
if left >= right:
return
low = left
high = right
p = arr[left]
while left < right:
while left < right and arr[right] >= p:
right -= 1
arr[left] = arr[right]
while left < right and arr[left] <= p:
left += 1
arr[right] = arr[left]
arr[left] = p
quick_sort(arr, low, left-1)
quick_sort(arr, left+1, high)
def find_sum(arr, sum):
"""尋找數(shù)組中相加等于sum的組合"""
quick_sort(arr, 0, len(arr) - 1)
begin, end = 0, len(arr) - 1
while begin < end:
if arr[begin] + arr[end] < sum:
begin += 1
elif arr[begin] + arr[end] > sum:
end -= 1
else:
print('%s %s' % (arr[begin], arr[end]))
begin += 1
end -= 1
if __name__ == '__main__':
arr = [1, 7, 17, 2, 6, 3, 14]
find_sum(arr, 20)以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
5個(gè)Python自動(dòng)化運(yùn)維腳本分享
Python 是一種流行的編程語言,具有豐富的第三方庫(kù)和強(qiáng)大的自動(dòng)化能力,適用于許多不同的領(lǐng)域,許多運(yùn)維工程師會(huì)使用 Python 腳本來自動(dòng)化運(yùn)維任務(wù),所以本文為大家整理了5個(gè)Python自動(dòng)化運(yùn)維腳本,有需要的可以參考下2023-08-08
Python基礎(chǔ)類繼承重寫實(shí)現(xiàn)原理解析
這篇文章主要介紹了Python基礎(chǔ)類繼承重寫實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
python實(shí)現(xiàn)車牌識(shí)別的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)車牌識(shí)別的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
在Python的Flask框架中驗(yàn)證注冊(cè)用戶的Email的方法
這篇文章主要介紹了在Python的Flask框架中驗(yàn)證注冊(cè)用戶的Email的方法,包括非常詳細(xì)的測(cè)試過程,極力推薦!需要的朋友可以參考下2015-09-09
TensorFlow固化模型的實(shí)現(xiàn)操作
這篇文章主要介紹了TensorFlow固化模型的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
python 利用已有Ner模型進(jìn)行數(shù)據(jù)清洗合并代碼
今天小編就為大家分享一篇python 利用已有Ner模型進(jìn)行數(shù)據(jù)清洗合并代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
PyCharm License Activation激活碼失效問題的解決方法(圖文詳解)
這篇文章主要介紹了PyCharm License Activation激活碼失效問題的解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
python出現(xiàn)更新庫(kù)失敗A?new?release?of?pip?is?available:?23.0.
學(xué)習(xí)了Python我們知道它自帶了很多的庫(kù),同時(shí)我們還需要對(duì)某個(gè)庫(kù)進(jìn)行升級(jí),這篇文章主要給大家介紹了關(guān)于python出現(xiàn)更新庫(kù)失敗A?new?release?of?pip?is?available:?23.0.1?->?23.3的解決辦法,需要的朋友可以參考下2024-03-03
Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作
這篇文章主要介紹了Pytorch模型遷移和遷移學(xué)習(xí),導(dǎo)入部分模型參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03

