LeetCode:Gray Code 题解
2014-05-22 16:53
381 查看
题目描述:
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.
For example, given n = 2, return
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
考察位操作:
从题目中例子可以发现这么一个规律:
解法如下:
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.
For example, given n = 2, return
[0,1,3,2]. Its gray code sequence is:
00 - 0 01 - 1 11 - 3 10 - 2
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
[0,2,3,1]is also a valid gray code sequence according to the above definition.
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
考察位操作:
从题目中例子可以发现这么一个规律:
假设结果数组为B,原始数组为A,则有: B[i] = A[i] ^ (A[i]>>1). 例如 : A[3] =3 B[3] = 3^(3>>1) = 011^001 = 010 = 2
解法如下:
class Solution { public: vector<int> grayCode(int n) { int len = pow(2.0,n),i,a; vector<int> vi; for(i=0;i<len;i++) { a= i^(i>>1); vi.push_back(a); } return vi; } };
相关文章推荐
- LeetCode-Gray Code
- leetcode Gray Code 格雷码
- leetcode--Gray Code
- LeetCode - Gray Code
- LeetCode: Gray Code [089]
- LeetCode 89 Gray Code
- LeetCode——Gray Code
- LeetCode: Gray Code [089]
- Gray Code(Leetcode 89)
- LeetCode-89-Gray Code(模拟/递归)-Medium
- leetcode 089 Gray Code
- Gray Code -- LeetCode
- LeetCode-Gray Code
- 【leetcode】Gray Code
- leetcode 第89题 Gray Code
- leetCode 89.Gray Code (格雷码) 解题思路和方法
- LeetCode: Gray Code
- [leetcode刷题系列]Gray Code
- leetcode:Gray Code (找规律)
- LeetCode - Gray Code