webVueBlog/Tencent-50-Leetcode

89. 格雷编码

webVueBlog opened this issue · 0 comments

/**

  • @param {number} n
  • @return {number[]}
    */
    // 二进制数转格雷码
    // var grayCode = function(n) {
    // const ret = []
    // for (let i = 0; i < 1 << n; i++) {
    // ret.push((i >> 1) ^ i)
    // }
    // return ret
    // };

// 递归版
// var grayCode = function(n) {
// if (n === 0) return [0]
// if (n === 1) return [0, 1]

// let add = 1 << (n-1)
// let lastStatus = grayCode(n - 1)
// let res = [...lastStatus]

// for (let i = lastStatus.length - 1; i >= 0; i--) {
// res.push(lastStatus[i] + add)
// }
// return res
// }

var grayCode = function(n) {
let ans = [0]
let pre = 1
for (let i = 0; i < n; i++) {
for (let j = ans.length - 1; j >= 0; j--) {
ans.push(pre + ans[j])
}
pre <<= 1
}
return ans
}