本文主要是介绍89. Gray Code M,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">问题:</span>
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.
递归即可,假设已有n-1位的graycode,则依次在前面添加上“1”便得到n位的graycode,对应于此题则是加上2^last_graycode_size。注意:是在n-1位graycode中依次从后往前添加“1”,
for (i = gray_len-1 ; i>=0; --i){gray.add(gray.get(i)+add_compare_last_gray);}
Java版:
public class Solution {int add_compare_last_gray = 1;public List<Integer> grayCode(int n) {int i;int gray_len;List<Integer> gray = new ArrayList<Integer>();if (n == 1){gray.add(0);gray.add(1);return gray;}if (n == 0){gray.add(0);return gray;}gray = grayCode(n-1);add_compare_last_gray*=2;gray_len = gray.size();//the gray.size() will change in below loopfor (i = gray_len-1 ; i>=0; --i){gray.add(gray.get(i)+add_compare_last_gray);}return gray;}
}
这篇关于89. Gray Code M的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!