日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中交换a和b的值_交换A和B之间的元素以获得和相等

發布時間:2023/12/20 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中交换a和b的值_交换A和B之间的元素以获得和相等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果有這樣的互換,那么兩個值之間的差值必須是總和差的一半。交換兩個值意味著兩個列表的總和將改變,一個上升,另一個下降,以相同的數量。這兩個變化必須加上掉期前的和之間的差值,且兩個總和都會以相同的值(^{cd1>}和^{cd2>}或值delta(這是兩個交換值之間的差異)而變化。

首先,函數將^{{cd3>}計算為總和和和和之間的δ。注意^{cd4>}可能大于^{cd5>},此時結果^{cd6>}為負值。這只意味著^{cd7>}中必須有一個小于^{{cd8>}中的目標值的值,然后交換將減少^{{cd4>}并增加^{cd5>}使它們相等。如果總和增量的奇偶性是odd而不是偶數,則永遠找不到值delta是總和增量的一半,因此函數此時返回^{{cd11>}。^{cd3>}的最終值是值delta,兩個交換值之間的差值量。記住,值delta是總和的一半。

算法計算^{{cd8>}中的所有值,然后測試^{{cd7>}中的所有值。只有當^{cd7>}中的^{em>a值與^{cd8>}中的aaa值不同時,才可能在^{cd8>}和^{cd7>}之間交換兩個值。與^{cd7>}交換的^{cd8>}中的值需要等于^{{cd22>}。對于一個負^{cd3>}(^{cd24>}),如果一個正^{cd3>}的數值越大,它會使^{cd25>}變小。

^{cd28>}測試將查看^{{cd29>}中是否有可用的值,但它首先測試^{{cd22>}仍在[0-m]:0 <= B[i] - d測試A中所尋求的數字是否仍然為正數。

^{cd33>}如果所尋求的數字仍然不大于^{cd34>};如果^{{cd35>}關閉,^{{cd3>}為負值,則可能會發生測試。

^{cd37>}包含^{{cd8>};如果^{{cd39>}中的數字計數為true,則A中至少有一個這樣的數字。這是一個可以交換的數字。

需要進行范圍測試,因為^{{cd40>}列表僅保留從0到m(包括)的數字的計數,而不是負數或大于^{{cd34>}的數字。

該函數可以通過使用集合而不是計數函數來改進。沒有必要知道數字在^{cd8>}中出現多少次,只是它存在存在。這將使邊界檢查過時,因為超出界限的數字將不會出現在^{{cd8>}的一組值中。

一旦我們有了一組a的值,我們就可以使用^{}測試這個集是否來自應用了delta的b值集的disjoint:def faster_solution(A, B, m=None): # m is ignored in this version

delta = sum(A) - sum(B)

if delta % 2 == 1:

return False

delta //= 2

return not set(A).isdisjoint(b - delta for b in B)

如果^{cd8>}中的值等于^{{cd7>}中的a值減去δ,則返回True。Python只會在^{cd47>}循環上循環,直到找到匹配(此時集合不是不相交的,并且^{cd48>}將結果反轉為True),或者循環已用盡,因此在^{cd8>}中找不到此類值,并且發現這些集合是不相交的。

所示的^{cd50>}函數還有另一個問題:它需要的內存遠遠超過所需的內存,而且與在進行計數時實現優化循環的^{} object相比,它的速度非常慢。A^{cd52>}使用字典(哈希映射)僅存儲大于0的計數。

上述設置的解決方案擊敗了“快速解決方案”的手:

^{pr2}$

不使用計數器,并且使用Python的set功能使長度為1000的輸入速度快了17倍!

故事的寓意:使用你所選擇的語言中可用的最好工具,并批判性地思考解決問題所需要的實際需要他有問題。Python內置的類型和操作通??梢宰屇苊庠赑ython字節碼中運行關鍵循環,從而顯著減少算法的恒定時間因子。在

總結

以上是生活随笔為你收集整理的python中交换a和b的值_交换A和B之间的元素以获得和相等的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。