Back to Halfrost Field

Bit Manipulation

website/content/bit_manipulation.md

latest7.4 KB
Original Source

+++ author = "一缕殇流化隐半边冰霜" categories = ["Algorithm", "Bit Manipulation"] date = 2019-11-09T08:27:00Z description = "" draft = false image = "https://img.halfrost.com/Blog/ArticleTitleImage/141_0.png" slug = "bit_manipulation" tags = ["Algorithm", "Bit Manipulation"] title = "Algorithm in LeetCode —— Bit Manipulation"

+++

Bit Manipulation 的 Tips:

  • 异或的特性。第 136 题,第 268 题,第 389 题,第 421 题,
go
x ^ 0 = x
x ^ 11111……1111 = ~x
x ^ (~x) = 11111……1111
x ^ x = 0
a ^ b = c  => a ^ c = b  => b ^ c = a (交换律)
a ^ b ^ c = a ^ (b ^ c) = (a ^ b)^ c (结合律)
  • 构造特殊 Mask,将特殊位置放 0 或 1。
go
1. 将 x 最右边的 n 位清零, x & ( ~0 << n )
2. 获取 x 的第 n 位值(0 或者 1),(x >> n) & 1
3. 获取 x 的第 n 位的幂值,x & (1 << (n - 1))
4. 仅将第 n 位置为 1,x | (1 << n)
5. 仅将第 n 位置为 0,x & (~(1 << n))
6. 将 x 最高位至第 n 位(含)清零,x & ((1 << n) - 1)
7. 将第 n 位至第 0 位(含)清零,x & (~((1 << (n + 1)) - 1))
  • 有特殊意义的 & 位操作运算。第 260 题,第 201 题,第 318 题,第 371 题,第 397 题,第 461 题,第 693 题,
go
X & 1 == 1 判断是否是奇数(偶数)
X & = (X - 1) 将最低位(LSB)的 1 清零
X & -X 得到最低位(LSB)的 1
X & ~X = 0
TitleSolutionDifficultyTimeSpace收藏
78. SubsetsGoMediumO(n^2)O(n)❤️
136. Single NumberGoEasyO(n)O(1)
137. Single Number IIGoMediumO(n)O(1)
169. Majority ElementGoEasyO(n)O(1)❤️
187. Repeated DNA SequencesGoMediumO(n)O(1)
190. Reverse BitsGoEasyO(n)O(1)
191. Number of 1 BitsGoEasyO(n)O(1)
201. Bitwise AND of Numbers RangeGoMediumO(n)O(1)❤️
231. Power of TwoGoEasyO(1)O(1)
260. Single Number IIIGoMediumO(n)O(1)
268. Missing NumberGoEasyO(n)O(1)
318. Maximum Product of Word LengthsGoMediumO(n)O(1)
338. Counting BitsGoMediumO(n)O(n)
342. Power of FourGoEasyO(n)O(1)
371. Sum of Two IntegersGoEasyO(n)O(1)
389. Find the DifferenceGoEasyO(n)O(1)
393. UTF-8 ValidationGoMediumO(n)O(1)
397. Integer ReplacementGoMediumO(n)O(1)
401. Binary WatchGoEasyO(1)O(1)
405. Convert a Number to HexadecimalGoEasyO(n)O(1)
421. Maximum XOR of Two Numbers in an ArrayGoMediumO(n)O(1)❤️
461. Hamming DistanceGoEasyO(n)O(1)
476. Number ComplementGoEasyO(n)O(1)
477. Total Hamming DistanceGoMediumO(n)O(1)
693. Binary Number with Alternating BitsGoEasyO(n)O(1)❤️
756. Pyramid Transition MatrixGoMediumO(n log n)O(n)
762. Prime Number of Set Bits in Binary RepresentationGoEasyO(n)O(1)
784. Letter Case PermutationGoEasyO(n)O(1)
898. Bitwise ORs of SubarraysGoEasyO(n)O(1)