• leetcode 89 Gray Code ----- java


    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.

    For now, the judge is able to judge based on one instance of gray code sequence. Sorry about that.

    求二进制格雷码

    两种方法:

    1、递归方法:

    public class Solution {
        public List<Integer> grayCode(int n) {
            List result = new ArrayList<Integer>();
            if( n == 0){
                result.add(0);
                return result;
            }else if ( n == 1){
                result.add(0);
                result.add(1);
                return result;
            }else     
                result.addAll(grayCode(n-1));
            int max = 1;
            for( int i = 1;i<n;i++){
                max*=2;
            }
            int size = result.size();
            for( int i = 1;i<=size;i++){
                result.add((int)result.get(max-i)+max);
            }        
            return result;
        }
    }

    2、位运算。

    public List<Integer> grayCode(int n) {
            List<Integer> ret = new ArrayList<>();
            ret.add(0);
            for (int i = 1, shift = 1; i <= n; i++) {
                // mirror from previous 2 ^ (i-1) 
                for (int j = shift-1; j >= 0; j--) {
                    // ret.get(j) ^ shift is more efficient here that +
                    ret.add((ret.get(j) ^ shift));
                }
                shift <<= 1;
            }
            
            return ret;
        }
  • 相关阅读:
    Window 7 + Ubuntu 双系统安装
    Android Proguard
    windows管理方式
    开启Telnet服务
    java中的Date类
    java中String字符串
    java自定义异常和throw、throws的使用
    java异常的嵌套和级联
    java中各种常见的异常
    java异常的基本概念和处理流程
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/5978927.html
Copyright © 2020-2023  润新知