LeetCode|Gray Code
来源:互联网 发布:软件翻墙是什么意思 编辑:程序博客网 时间:2024/05/17 23:37
题目
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
解题思路
1.先求出格雷码的二进制形式,然后再求出它的十进制,这种方法对时间和空间的要求较高。
2.直接通过公式得到相应的格雷码的十进制:G(i) = i ^ (i >> 1),即第i个格雷码的十进制为i异或(i >> 1)。
AC代码(仅方法二)
class Solution {public: vector<int> grayCode(int n) { vector<int> results; for(int i = 0; i < (1 << n); ++i) results.push_back(i ^ (i >> 1)); return results; }};
方法二的来源见维基百科:格雷码
方法一中的格雷码的生成可见:格雷码的生成
0 0
- 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
- 北京汉传佛寺游人评价数据的抓取与分析(1)
- Shell脚本及钩子
- android TextView控件加背景和字体颜色多状态控制时,部分状态不起作用问题
- 电商项目的进程
- 蓝桥杯-2017模拟赛本科试题-排列序数-java
- LeetCode|Gray Code
- 最小表示法 模板【poj1509】Glass Bead
- java拷贝模板创建java类
- 简单阶乘算法(递归解决)
- 使用宏定义来获取一个结构体成员相对于该结构体首地址的偏移量
- 原型、原型链-持续更新
- 如何在CSDN博客中编辑公式?
- 二分+倍增思想 “玲珑杯”ACM比赛 Round #13/B
- HTTP1.0 HTTP 1.1 HTTP 2.0主要区别