链接: https://leetcode.cn/problems/gray-code/
题意
n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:
每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)
第一个整数是 0
一个整数在序列中出现 不超过一次
每对相邻整数的二进制表示恰好一位不同 ,且第一个和最后一个整数的二进制表示恰好一位不同
给你一个整数 n ,返回任一有效的 n 位格雷码序列 。
解法
观察不同n的格雷序列
n = 1: [0, 1]
n = 2: [0, 1, 3, 2]
n = 3: [0, 1, 3, 2, 6, 7, 5, 4]
可以发现第n个序列前半部分和n - 1是一样的,后半部分是前半部分对称 再加上 n - 1的长度
就可以构成新的格雷序列
用这种思路可以很顺利的写出代码
当然还有一种就是格雷序列的正统生成方式
每次i 和 (i / 2) 进行异或得到的结果就是格雷序列
代码
解法一
1 | class Solution { |
解法二
1 | class Solution { |