LeetCode:Gray Code
2013-09-15 21:52
239 查看
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
Its gray code sequence is:
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
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.
起初我把这道题想复杂了,我提交了一个简单的暴力查找的算法,过了。
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.
起初我把这道题想复杂了,我提交了一个简单的暴力查找的算法,过了。
package leetcode; import java.util.ArrayList; import java.util.Arrays; public class GrayCode { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub GrayCode c = new GrayCode(); System.out.println(c.grayCode(3)); } public ArrayList<Integer> grayCode(int n) { ArrayList<Integer> result = new ArrayList<Integer>(); char[] temp = new char ; Arrays.fill(temp, '0'); boolean[] flag = new boolean[(int)Math.pow(2, n)]; Arrays.fill(flag, false); result.add(toInt(temp, n)); flag[0] = true; boolean f = true; while (f) { f = false; for (int i = 0; i < n; i++) { char old = temp[i]; if (old == '1') { temp[i] = '0'; } else { temp[i] = '1'; } int r = toInt(temp, n); if (flag[r]) { temp[i] = old; } else { result.add(r); flag[r] = true; f = true; break; } } } return result; } private int toInt(char[] c, int n) { int r = 0; int i = 0; int t = 1; while (i < n) { if (c[i] == '1') { r += t; } i++; t *= 2; } return r; } }
相关文章推荐
- [LeetCode][Java] Gray Code
- leetcode -- Gray Code
- [leetcode]Gray Code
- 《leetCode》: Gray Code
- [LeetCode]Gray Code
- LeetCode | Gray Code
- leetcode89 Gray Code
- [LeetCode] Gray Code 解题报告
- [leetcode] 89.Gray Code
- LeetCode 089 Gray Code
- [leetcode]Gray Code
- Gray Code(Leetcode 89)
- [LeetCode]89. Gray Code
- [leetcode]Gray Code
- Leetcode: Gray Code
- [Leetcode][python]Gray Code
- leetcode -- Gray Code -- 数学题
- leetcode 89:Gray Code
- 【LeetCode】89. Gray Code解法及注释
- LeetCode 89: Gray Code 格雷码