[leetcode] Gray Code
来源:互联网 发布:张艺兴泰国人气知乎 编辑:程序博客网 时间:2024/05/21 11:37
From : https://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 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 - 001 - 111 - 310 - 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.
Solution 1:
Binary Code :1011 要转换成Gray Code
1011 = 1(照写第一位), 1(第一位与第二位异或 1^0 = 1), 1(第二位异或第三位, 0^1=1), 0 (1^1 =0) = 1110
其实就等于 (1011 >> 1) ^ 1011 = 1110
class Solution {public: vector<int> grayCode(int n) { int size = 1<<n; vector<int> grayCodes(size); for (int i = 0; i < size; i++){ grayCodes[i] = (i>>1) ^i; } return grayCodes; }};
Solution 2:
递归生成码表
- 1位格雷码有两个码字,
- (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0,
- (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1.
class Solution {public: vector<int> grayCode(int n) { vector<int> result; result.push_back(0); for(int i=0; i<n; i++){ int highest = 1<<i; int len = result.size(); for(int i=len-1; i>=0; i--){ result.push_back(highest+result[i]); } } return result; }};
- LeetCode: Gray Code
- [LeetCode] 格雷码(Gray Code)
- LeetCode Gray Code
- [Leetcode] Gray Code
- [LeetCode] Gray Code
- leetcode 112: Gray Code
- LeetCode Gray Code
- [leetCode] Gray Code
- [LeetCode]Gray Code
- Leetcode: Gray Code
- [leetcode]Gray Code
- LeetCode-Gray Code
- [leetcode] Gray Code
- LeetCode - Gray Code
- leetcode之Gray code
- LeetCode:Gray Code
- 【转载】【leetcode】Gray Code
- LeetCode - Gray Code
- Java连接MYSQL 数据库的连接步骤
- cmake使用
- JS 将 string 转换成为 number
- 查看文件被占用的进程 NtQueryObject NtQueryInformationFile NtQuerySystemInformation
- 关于ppp协议,我的疑问????
- [leetcode] Gray Code
- HTML5学习-Day4
- 日语学习之沪江N3基础 20150624 -5
- 浅析python 中__name__ = '__main__' 的作用
- Android布局文件-错误
- Oracle数据库创建表ID字段的自动递增
- [IOS]JASidePanels(侧滑栏)的使用
- 30年程序员经验总结
- 正确使用stl map的erase方法