首页 > 代码库 > LeetCode OJ - Gray Code
LeetCode OJ - Gray Code
这道题就是找规律啊!!!
想想啊,11和10是可以连续的,那么10和11也是可以连续的。
下面是AC代码:
1 /** 2 * The gray code is a binary numeral system where two successive values differ in only one bit. 3 * 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. 4 * For example, given n = 2, return [0,1,3,2]. Its gray code sequence is: 5 * 00 - 0 6 * 01 - 1 7 * 11 - 3 8 * 10 - 2 9 * Note: 10 * For a given n, a gray code sequence is not uniquely defined. 11 * For example, [0,2,3,1] is also a valid gray code sequence according to the above definition. 12 * For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that. 13 * Solution : find the rule!!!! 14 * @param n 15 * @return 16 */ 17 public ArrayList<Integer> grayCode(int n) { 18 ArrayList<Integer> r = new ArrayList<Integer>(); 19 r.add(0); 20 if(n == 0) 21 return r; 22 r.add(1); 23 if(n == 1) 24 return r; 25 for(int m = 1;m<n;m++){ 26 int cur_size = r.size(); 27 int base = (int) Math.pow(2, m); 28 for(int i = cur_size - 1;i>=0;i--){ 29 r.add(r.get(i)+base); 30 } 31 } 32 return r; 33 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。