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.