89. Gray Code
2016-04-15 19:52
423 查看
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
is:
Note:
For a given n, a gray code sequence is not uniquely defined.
For example,
For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.
思路:
0000 0
0001 1
0011 3
0010 2
0110 6
0111 7
0101 5
0100 4
可以看出,第i个值等于第2i-pow(2,count2bit(i))的值加上pow(2,count2bit(i))
代码如下(已通过leetcode)
public List<Integer> grayCode(int n) {
List<Integer> list=new ArrayList<Integer>();
if(n==0) {
list.add(0);
return list;
}
list.add(0);
list.add(1);
int i=2;
while(i<=n) {
int length=list.size();
for(int j=length-1;j>=0;j--) {
list.add(list.get(j)+(int)Math.pow(2, i-1));
}
i++;
}
return list;
}
}
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.
思路:
0000 0
0001 1
0011 3
0010 2
0110 6
0111 7
0101 5
0100 4
可以看出,第i个值等于第2i-pow(2,count2bit(i))的值加上pow(2,count2bit(i))
代码如下(已通过leetcode)
public List<Integer> grayCode(int n) {
List<Integer> list=new ArrayList<Integer>();
if(n==0) {
list.add(0);
return list;
}
list.add(0);
list.add(1);
int i=2;
while(i<=n) {
int length=list.size();
for(int j=length-1;j>=0;j--) {
list.add(list.get(j)+(int)Math.pow(2, i-1));
}
i++;
}
return list;
}
}
相关文章推荐
- POJ 3373 Changing Digits
- Leetcode Self Crossing
- 初学android开发--day07
- HDU-1010-Tempter of the Bone(搜索奇偶剪枝)
- 第五次Java作业
- JAVA第五次作业
- python与c互相调用
- 使用Nexus创建Maven私有仓库
- centos6环境创建局域网http方式的yum源
- nefu500(二分,最大流)
- RStudio快捷键
- poj 3233(矩阵快速幂+二分)
- centos6环境创建局域网http方式的yum源
- 详细解析BluetoothAdapter的详细api
- 怎么用oracle数据泵导数据
- no transaction is in progress
- 时间格式化函数--strftime
- 在word中插入高亮缩进的代码
- 统计代码的行数
- UVa409_Excuses, Excuses!(小白书字符串专题)