ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer*n*representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0. **Example 1:** ~~~ Input: 2 Output: [0,1,3,2] Explanation: 00 - 0 01 - 1 11 - 3 10 - 2 For a given n, a gray code sequence may not be uniquely defined. For example, [0,2,3,1] is also a valid gray code sequence. 00 - 0 10 - 2 11 - 3 01 - 1 ~~~ **Example 2:** ~~~ Input: 0 Output: [0] Explanation: We define the gray code sequence to begin with 0. A gray code sequence of n has size = 2n, which for n = 0 the size is 20 = 1. Therefore, for n = 0 the gray code sequence is [0]. ~~~ 比如说我们输入3,结果是[0,1,3,2,6,7,5,4] 那么总数就是2的三次方=8; 我们把他分成两瓣,[0,1,3,2]和[6,7,5,4], 然后!我们把[0,1,3,2]复制一份,然后倒过来[2,3,1,0]。 这个[6,7,5,4]减去[2,3,1,0]等于[4,4,4,4]=2的n-1次方遍历4次! ![](https://img.kancloud.cn/c9/67/c9678bc0c5bcd5f0bc947198c5549364_858x358.png) ``` /** * @param {number} n * @return {number[]} */ var grayCode = function(n) { var res = [0]; var right; var i = 1; for(;i<=n;i++ ){ right = [...res].reverse().map((item) => item + Math.pow(2, i - 1)); res = res.concat(right); } return res; }; ``` ![](https://img.kancloud.cn/5c/a3/5ca386842d654e8230625c7e0699fee1_645x565.png)