89. Gray Code

The gray code is a binary numeral system where two successive values differ in only one bit.

Given an integer n representing the total number of bits in the code, return any sequence of gray code.

A gray code sequence must begin with 0.

 

Example 1:

Input: n = 2
Output: [0,1,3,2]
Explanation:
00 - 0
01 - 1
11 - 3
10 - 2
[0,2,3,1] is also a valid gray code sequence.
00 - 0
10 - 2
11 - 3
01 - 1

Example 2:

Input: n = 1
Output: [0,1]

 

Constraints:

  • 1 <= n <= 16

Rust Solution

struct Solution;

impl Solution {
    fn gray_code(n: i32) -> Vec<i32> {
        let mut res = vec![];
        for i in 0..(1 << n) {
            res.push(i ^ i >> 1);
        }
        res
    }
}

#[test]
fn test() {
    let n = 2;
    let res = vec![0, 1, 3, 2];
    assert_eq!(Solution::gray_code(n), res);
}

Having problems with this solution? Click here to submit an issue on github.