Leetcode: Gray Code
来源:互联网 发布:linux 查看外网ip 编辑:程序博客网 时间:2024/06/05 15:09
URL
https://leetcode.com/problems/gray-code/#/description
描述
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时:0001-------1110n=3时:000001011010-------110111101100
我们可以发现当位数为n时,其前一半的情况正好等于n-1的所有情况(在数值上相等,表示的时候用0占位),其后一半的规律是开头都是1,后面的n-1位正好和前面一半的出现顺序相反。找到这样的规律之后代码实现就不难了。
代码
public class Solution { public List<Integer> grayCode(int n) { List<Integer> result = new ArrayList<Integer>(); dfs(n,result); return result; } public void dfs(int n,List<Integer> result){ if(n==0){result.add(0);return;} if(n==1){ result.add(0); result.add(1); return; } dfs(n-1,result); int size = result.size(); for(int i=size-1;i>=0;i--){ result.add(result.get(i)+(1<<(n-1))); } }}
- 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
- 关于el5,el6和el7是什么
- HTML+CSS编写静态网站-32 为关于页面添加样式
- ny-95-众数问题
- Android网络API(android.net.rtp):概览
- linux 中的ps命令
- Leetcode: Gray Code
- linux grep命令
- FastDFS实现文件上传下载实战
- gecko需求描述
- Android网络API(android.net.sip):概览
- eclipse快捷键
- log4j配置
- C primer plus(编程练习)file-2.12-1
- 《太空射击》扩展