89. 格雷码
Tag Math
Difficulty Medium
Link https://leetcode-cn.com/problems/gray-code/
分析
格雷码与二进制码之间存在关系:
假设格雷码第n位为G(n), 二进制第n位为B(n)
对于n+1位,
G ( n + 1 ) = B ( n + 1 ) G(n+1) = B(n+1) G(n+1)=B(n+1)
G ( n ) = B ( n + 1 ) X O R B ( n ) G(n) = B(n+1) XOR B(n) G(n)=B(n+1)XORB(n)
即最高位保留,其它位是当前位和它高一位进行异或运算。
题解
class Solution {
public List<Integer> grayCode(int n) {
List<Integer> gray = new ArrayList<>();
for (int i=0; i<1<<n; i++) {
gray.add(i^i>>1);
}
return gray;
}
}
复杂度分析
- 时间复杂度:
O(2^n)
- 空间复杂度:
O(1)