[leetcode]89. Gray Code
来源:互联网 发布:js every 编辑:程序博客网 时间:2024/05/21 10:12
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.
解法:
这题的关键在于用什么样的方式把这2^n个数入队列使得任意两个相邻的数只有一个的二进制码只有一位不同。
可以这样考虑:对于已经处理好的n=k-1的情况,2^(k-1)个数已经在队列中,接下来只需从队列末端开始反向遍历该队列并在该数最高位前加一个1再入队列即可满足n=k时的情况。
example:
n=3时,[000,001,011,010,110,111,101,100]
n=4时,[0000,0001,0011,0010,0110,0111,0101,0100, 1100,10101,10111,10110,10010,10011,10001,10000]
于是,在保证初始队列中有一个0后,从n=1开始做上述动作知道n=XX即可。(XX是用户输入的数)
public class Solution { public List<Integer> grayCode(int n) { List<Integer> res = new ArrayList<Integer>(); int last = 0; res.add(last); for(int i = 1; i <= n; i++){ Integer base = (int) Math.pow(2, i-1); for(int j = res.size()-1 ; j >= 0; j--){ res.add(res.get(j) + base); } } return res; }}
- [LeetCode]89.Gray Code
- LeetCode 89. Gray Code
- [Leetcode] 89. Gray Code
- LeetCode --- 89. Gray Code
- [leetcode] 89.Gray Code
- 89. Gray Code LeetCode
- [LeetCode]89. Gray Code
- Leetcode 89. Gray Code
- [leetcode] 89. Gray Code
- LeetCode *** 89. Gray Code
- [LeetCode]89. Gray Code
- leetcode 89. Gray Code
- leetcode 89. Gray Code
- [leetcode]89. Gray Code
- LeetCode-89.Gray Code
- LeetCode 89. Gray Code
- LeetCode - 89. Gray Code
- [LeetCode] 89. Gray Code
- PHP证书图片生成
- 第10章-基于树的方法(2)-树的剪枝
- hdoj 2056 Rectangles(矩形) 【几何】
- Python-error问题记录
- 使用模块
- [leetcode]89. Gray Code
- Android 6.0动态权限 Runtime Permission API使用
- ClassNotFoundException和NoClassDefFoundError的区别
- Masrony 简单的使用
- jquery 通知插件toastr
- 71. Simplify Path
- 第11周项目3-警察与厨师(2)
- easyui-datagrid-JavaScript-导出Excel、合并单元格
- java发送email