LeetCode:Gray Code 题解

题目描述:

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

解法如下:


 1 class Solution {
2 public:
3 vector<int> grayCode(int n) {
4 int len = pow(2.0,n),i,a;
5 vector<int> vi;
6 for(i=0;i<len;i++)
7 {
8 a= i^(i>>1);
9 vi.push_back(a);
10 }
11 return vi;
12 }
13 };

时间: 2024-10-24 09:20:52

LeetCode:Gray Code 题解的相关文章

LeetCode——Gray Code

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. Fo

[leetcode]Gray Code @ Python

原题地址:https://oj.leetcode.com/problems/gray-code/ 题意: 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

LeetCode: Gray Code [089]

[题目] 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

[LeetCode]Gray Code

题目描述:(链接) 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

LeetCode: Gray Code 解题报告

Gray CodeThe 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 w

LeetCode Gray Code 格雷码

题意:提供一个数字n,代表二进制的个数,那么就有2的n次方个可能性了,从0到2^n-1.将其转成格雷码,再直接将二进制的格雷码按二进制的读法变成整数,装在vector容器中返回,要有序(否则你直接将0-2^n-1返回算了). 思路:咋一看!什么是格雷码?假设有1个整数,是二进制形式的,将其最高位的1提出来,其他的每一位等于该位上的数字与该数字的前一位之异或. 好像很复杂的样子?举例: 整数 21 = 0001 0101 二进制 ,格雷码前4位是这样的0001,这就是将二进制的最高位的1提出来啦,

Gray Code leetcode java

题目: 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

LeetCode:Gray Code

1.题目名称 Gray Code(格雷码) 2.题目地址 https://leetcode.com/problems/gray-code/ 3.题目内容 英文: 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

LeetCode --- 89. Gray Code

题目链接:Gray Code 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 b