作者darkhcv (我只想耍廢)
看板Python
標題[問題] 新手解leetcode遇到performance問題
時間Thu Jul 14 17:04:25 2016
最近在練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
→ darkhcv: 瞭解,謝謝~ 07/15 07:37