看板 Python 關於我們 聯絡資訊
最近在練LeetCode題目,因為也有在學python 所以就想說把剛剛用c++解的題目用python寫寫看 一樣的algorithm拿去跑結果出現 "Time Limit Exceeded" 想請教一下為何這樣的寫法在python下performance會不好? 我用c++寫一樣的邏輯有通過 class Solution(object): def getSum(self, a, b): if (a&b) == 0: return a|b while (a&b) != 0: bit_add = a^b carry = (a&b) << 1 a = bit_add b = carry return a|b C++版 class Solution { public: int getSum(int a, int b) { if ((a&b) == 0) return a|b; while ((a&b) != 0) { int bit_add = a^b; int carry = (a&b) << 1; a = bit_add; b = carry; } return a|b; } }; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.146.84.72 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1468487069.A.360.html
tiefblau: C++ code貼一下啊 07/14 17:09
Yshuan: python的 & (bit 運算) 費時超過加減法 07/14 17:10
※ 編輯: darkhcv (122.146.84.72), 07/14/2016 17:12:56
withoutshine: a=-1, b=1 的時候你的解法似乎是過不了 07/14 20:51
darkhcv: a=-1, b=1時,就是會出現"Time Limit Exceeded" 07/14 21:38
darkhcv: 我的理解是這個訊息表示跑太久了 07/14 21:39
darkhcv: 但是一樣的解法以c++來實做是可以測試通過的 07/14 21:39
CaptainH: python整數沒寬度限制 07/14 23:14
CaptainH: 二補數的msb永遠是1 當然是無窮迴圈 07/14 23:15
ckc1ark: -1在python裡做bitwise op是0xff....ff無窮多個f 07/14 23:24
ckc1ark: 詳見 https://wiki.python.org/moin/BitwiseOperators 07/14 23:24
darkhcv: 瞭解,謝謝~ 07/15 07:37