Binary Number with Alternating Bits

題目

  1. 先想到的是有沒有辦法透過 bitwise operation 來判斷,發現無法
  2. 看相鄰位置有沒有一樣的,最直覺就是用字串來判斷 => 可以利用 Python 的 built-in function bin 來把數字轉為 binary 字串

Python3 solution:

1
2
3
4
5
6
def hasAlternatingBits(self, n: int) -> bool:
b_str = bin(n)[2:] # 去掉前面的 '0b'
for i in range(len(b_str) - 1):
if b_str[i] == b_str[i + 1]:
return False
return True

Single Number

題目

  1. 因為只能用常數的額外空間,且 array 裡的數字除了目標之外都會有個,所以朝 bitwise operation 的方向想
  2. 把 array 裡所有數字接連做 bitwise operation,假如有兩個一樣的數字,他們就會抵銷變為 0,即使不是連著做也一樣,所以最後的結果就是那個落單的數字
    • 可以想像所有數字都用二進位表示由上而下列在一起做計算,不管他們位置怎麼換結果都會一樣 (偶數個 1 會互相抵銷)

Python3 solution:

1
2
3
4
5
def singleNumber(self, nums: List[int]) -> int:
r = 0
for i in nums:
r ^= i
return r
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×