LeetCode89:Gray Code
来源:互联网 发布:javascript hide div 编辑:程序博客网 时间:2024/06/16 00:09
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.
解法一
这道题感觉是一个找规律的题目,找到规律后就很好求解,感觉不是一道回溯的题。
对于n=2,它的结果包括n=1时的结果左边补零,以及逆序遍历n=1时的结果左边补1,
规律如下图,列出了n=1,n=2,n=3时的情况。
根据这个规律如果已知n=k的情况,那么n=k+1的结果包括对n=k的结果左边补零,即保存不变,然后逆序遍历n=k的结果左边补1即可。
runtime:4ms
class Solution {public: vector<int> grayCode(int n) { vector<int> result(1); for(int i=0;i<n;i++) { for(int j=result.size()-1;j>=0;j--) { result.push_back((1<<i)+result[j]); } } return result; }};
解法二
解法二就涉及到gray code的数学知识了,要是知道这个数学知识,可以在几分钟之内就解出这道题。
格雷码可以由对应的十进制数求出:grayCode=i^i>>1
runtime:4ms
class Solution {public: vector<int> grayCode(int n) { vector<int> result; for(int i=0;i<1<<n;i++) { result.push_back(i^i>>1); } return result; }};
- LeetCode89:Gray Code
- LeetCode89. Gray Code
- LeetCode89. Gray Code
- leetcode89-Gray Code(格雷码)
- leetcode89: Gray Code
- leetcode89~Gray Code
- Leetcode89. Gray Code
- leetcode89. Gray Code
- LeetCode89 Gray Code
- LeetCode89——Gray Code
- LeetCode89/60 Gray Code/Permutation Sequence--迭代
- Gray Code
- Gray Code
- gray code
- Gray Code
- Gray Code
- Gray Code
- Gray Code
- leetcode - Reverse Words in a String
- WPF 自定义属性和触发器
- 硬件电路之电感,磁珠,零欧姆电阻的应用
- AsyncTask的使用
- Guide to understanding XSS – XSS payloads, attack vectors, BeEF hooking, MiTM with Shank and some hi
- LeetCode89:Gray Code
- 自定义“菊花dialog”
- cas-server异常不会后台显示而是变成json显示在页面。
- MySQL查看和修改表的存储引擎
- AIX Study之--AIX用户资源访问限制配置
- SQL Server 跨服务器 不同数据库之间复制表的数据的方法!
- GRE写作必备句型
- import caffe时出错:can not find module skimage.io
- [深入学习C#]C#实现多线程的方式:Task——任务