[問題] 關於if else statement

看板Python作者 (あBen)時間7年前 (2018/06/27 10:37), 編輯推噓3(307)
留言10則, 5人參與, 7年前最新討論串1/2 (看更多)
第一次發文 如果有那裡不妥當請告知 最近在LEETCODE刷提 遇到一題求 list 裡面任意兩數字XOR最大值 題目連結在這邊 https://goo.gl/HPH4Sm 這題最快的解答是 class Solution: def findMaximumXOR(self, nums): """ :type nums: List[int] :rtype: int """ ans = 0 for bit in range(31, -1, -1) : ans = (ans << 1) + 1 pre = set() for n in nums : p = (n >> bit) & ans if p in pre : #1 break #2 pre.add(ans - p) #3 else : #4 ans -= 1 return ans 我的問題在我標#1-4的地方 我不太明白這邊的if else statement 怎麼運作的(特別是#4) 一開始我以為是當if p not in pre: 就會直接跳到#4 但是好像不太對 請問有人可以跟我說明一下嗎? 非常感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 174.55.55.170 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1530067068.A.3E3.html

06/27 11:20, 7年前 , 1F
else是跟著for的
06/27 11:20, 1F

06/28 01:17, 7年前 , 2F
for正常結束後會做else的內容
06/28 01:17, 2F

06/28 11:14, 7年前 , 3F
FOR-ELSE,好像是Python特有的 @@
06/28 11:14, 3F

06/28 14:10, 7年前 , 4F
else是跟著for,看縮排比較好懂~ for完整跑完就會執行else
06/28 14:10, 4F

06/28 14:10, 7年前 , 5F
通常是用來判斷是否有中離(?
06/28 14:10, 5F

06/28 14:12, 7年前 , 6F
這題不暴力解就是利用xor的特性,a^b=c則 a^c=b,c是預期最
06/28 14:12, 6F

06/28 14:13, 7年前 , 7F
大值,再判斷做完xor後b是否在set裡面,沒有該bit設為零
06/28 14:13, 7F

06/28 14:13, 7年前 , 8F
簡單來說就是每個bit掃一次,由高位元到低位元跑32次
06/28 14:13, 8F

06/28 14:14, 7年前 , 9F
你問的 else: ans -= 1就代表不在set中,要把前面加1減回來
06/28 14:14, 9F

06/28 23:16, 7年前 , 10F
感謝說明!!
06/28 23:16, 10F
文章代碼(AID): #1RClXyFZ (Python)
討論串 (同標題文章)
文章代碼(AID): #1RClXyFZ (Python)