您的位置:首页 > 其它

lintcode-medium-Gray Code

2016-03-22 12:02 211 查看
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, find the sequence of gray code. A gray code sequence must begin with
0
and with cover all 2n integers.

Given
n = 2
, return
[0,1,3,2]
. Its gray code sequence is:

00 - 0
01 - 1
11 - 3
10 - 2


[/code]

public class Solution {
/**
* @param n a number
* @return Gray code
*/
public ArrayList<Integer> grayCode(int n) {
// Write your code here
ArrayList<Integer> result = new ArrayList<Integer>();

if(n < 0)
return result;

if(n == 0){
result.add(0);
return result;
}

result.add(0);
result.add(1);

for(int i = 2; i <= n; i++){
ArrayList<Integer> new_half = new ArrayList<Integer>();
for(int j = result.size() - 1; j >= 0; j--)
new_half.add(result.get(j) + (1 << (i - 1)));

result.addAll(new_half);
}

return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: