iT邦幫忙

0

python符號問題

本題為LeetCode, 136題
找出沒有重複兩次的數字

class Solution(object):
    def singleNumber(self, nums):
        sum=0
        for i in nums:
            sum=sum^i
        return sum
                
d = Solution()
g = d.singleNumber([4,1,2,1,2])
print(g)

然後我要問 "sum^i" 的 " ^ " <<<
他不是平方欸,我去網路上還有官方python資料庫都找不到
" ^ " <<< 到底是甚麼算法呢求助於大大們

ccutmis iT邦高手 4 級 ‧ 2021-07-05 21:52:08 檢舉
XOR 參考:
https://www.w3schools.com/python/python_operators.asp

2 個回答

0
uobik
iT邦新手 4 級 ‧ 2021-07-06 03:18:14
最佳解答

這題目的條件,剛好可以這樣算
如果單獨的數字有兩個以上,或重複的數字是重複三次,就不能這樣算了
Given a non-empty array of integers, every element appears twice except for one. Find that single one.

xor 邏輯異或
因為數字和自己異或,會等於0
數字和0異或,會等於它本身
異或又符合交換率
所以全部異或一遍,答案就是只出現一次的那個數字

0
I code so I am
iT邦高手 1 級 ‧ 2021-07-06 08:35:05

這一題用 Python 寫,只要一行:

set([4,1,2,1,2])

我非常討厭考LeeCode,在職場需要的是系統分析、系統架構、專案管理等解決實際問談的能力,但是國內蛋頭學者都盡學Google/FB/MS那一套,專考基礎能力,唉!

Lin2602 iT邦新手 5 級 ‧ 2021-07-06 11:29:08 檢舉

問題在於這樣額外開了O(n)的記憶體空間,雖然可能會說實際上沒什麼差別,不過這的確相較之下是個效能更差的作法。

本人非本科生,目前只知道有LeetCode的這個網站可以練習編寫程式,那請問大大還有甚麼推薦的網站或者是系統推薦學習呢?

話說如果set([4,1,2,1,2])結果不是會變為[4,1,2]嗎?

我要發表回答

立即登入回答