Bit Manipulation
XOR Definition
A number XOR itself will become 0, any number XOR with 0 will stay unchanged.
class Solution { public int missingNumber(int[] nums) { int res = nums.length; for(int i=0; i<nums.length; i++){ res ^= i; res ^= nums[i]; } return res; }}Power of Two
Given an integer n, return true if it is a power of two. Otherwise, return false.
An integer n is a power of two, if there exists an integer x such that n == 2^x.
class Solution { public boolean isPowerOfTwo(int n) { return n>0 && (n&(n-1)) == 0; }}class Solution { public boolean isPowerOfTwo(int n) { return n>0 && Integer.bitCount(n) == 1; }}Single Number
Given an integer array nums where every element appears three times except for one,
which appears exactly once. Find the single element and return it.
You must implement a solution with a linear runtime complexity and use only constant extra space.
class Solution { public int singleNumber(int[] arr) { int ones = 0; int twos = 0; for (int value : arr) { ones = (ones ^ value) & ~twos; twos = (twos ^ value) & ~ones; } return ones; }}// This problem can be translated to:
// For every bit position, we cancel any 3-time 1 and 3-time 0 to a 0
// Then we need to find equations that fits this: (assume we apply 3 1s)
// Zero 1 First 1 Second 1 Third 1
// ones 0 1 0 0
// twos 0 0 1 0