0%

leetcode 89 Solution

代码解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package com.demo.s89;

import java.util.ArrayList;
import java.util.List;

/**
* 格雷编码
* n 位格雷码序列 是一个由 2n 个整数组成的序列,其中:
* 每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)
* 第一个整数是 0
* 一个整数在序列中出现 不超过一次
* 每对 相邻 整数的二进制表示 恰好一位不同 ,且
* 第一个 和 最后一个 整数的二进制表示 恰好一位不同
* 给你一个整数 n ,返回任一有效的 n 位格雷码序列 。
*
* 来源:力扣(LeetCode)
* 链接:https://leetcode.cn/problems/gray-code
* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/
public class Solution {
public List<Integer> grayCode(int n) {
List<Integer> res = new ArrayList<Integer>() {{ add(0); }};
int head = 1;
for (int i = 0; i < n; i++) {
for (int j = res.size() - 1; j >= 0; j--)
res.add(head + res.get(j));
head <<= 1;
}
return res;
}
}