Algorithm in LeetCode —— Bit Manipulation

Tips for Bit Manipulation:

  • Properties of XOR. Problem 136, Problem 268, Problem 389, Problem 421,
x ^ 0 = x
x ^ 11111……1111 = ~x
x ^ (~x) = 11111……1111
x ^ x = 0
a ^ b = c  => a ^ c = b  => b ^ c = a (commutative law)
a ^ b ^ c = a ^ (b ^ c) = (a ^ b^ c (associative law)
  • Construct a special Mask, setting the special positions to 0 or 1.
1. Clear the rightmost n bits of x, x & ( ~0 << n )
2. Get the value of the nth bit of x (0 or 1), (x >> n) & 1
3. Get the power value of the nth bit of x, x & (1 << (n - 1))
4. Set only the nth bit to 1, x | (1 << n)
5. Set only the nth bit to 0, x & (~(1 << n))
6. Clear bits from the highest bit of x through the nth bit (inclusive), x & ((1 << n) - 1)
7. Clear bits from the nth bit through the 0th bit (inclusive), x & (~((1 << (n + 1)) - 1)
  • Bitwise & operations with special meanings. Problem 260, Problem 201, Problem 318, Problem 371, Problem 397, Problem 461, Problem 693,
X & 1 == 1 determines whether it is odd (even)
X & = (X - 1) clears the lowest set bit (LSB)
X & -X gets the lowest set bit (LSB)
X & ~X = 0
TitleSolutionDifficultyTimeSpaceFavorites
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)