<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小明思考

    Just a software engineer
    posts - 124, comments - 36, trackbacks - 0, articles - 0
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    格雷碼

    Posted on 2013-05-20 21:09 小明 閱讀(2582) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)結(jié)構(gòu)和算法
    問(wèn)題格雷碼是一個(gè)二進(jìn)制的編碼系統(tǒng),相鄰的兩個(gè)數(shù)只有一位是不同的。
    給定一個(gè)非負(fù)的整數(shù)n,代表了格雷碼的位的總數(shù)。輸出格雷碼的序列,這個(gè)序列必須以0開(kāi)始。

    比如,給定n=2,輸出[0,1,3,2],格雷碼是
    0 = 00
    1 = 01
    3 = 11
    2 = 10

    注:格雷碼的序列并不是唯一,比如n=2時(shí),[0,2,3,1]也滿足條件。


    分析:
    格雷碼的序列中應(yīng)包含2^n個(gè)數(shù)。這個(gè)問(wèn)題初看起來(lái)不容易,我們要想出一個(gè)生成方法。

    對(duì)于n=2,序列是:
    00,01,11,10
    那對(duì)于n=3,如何利用n=2的序列呢?一個(gè)方法是,先在n=2的四個(gè)序列前加0(這其實(shí)是保持不變),然后再考慮把最高位變成1,只需要把方向反過(guò)來(lái)就可以了
    000,001,011,010
    100,101,111,110-> 110,111,101,100
    把這兩行合起來(lái)就可以得到新的序列。

    想通了,寫(xiě)代碼就很容易了。

    public class Solution {
        public ArrayList<Integer> grayCode(int n) {
            ArrayList<Integer> result = new ArrayList<Integer>();
            result.add(0);
            if(n>0){
                result.add(1);
            }
            
            int mask = 1;
            for(int i=2;i<=n;++i){
                mask *= 2;
                for(int j=result.size()-1;j>=0;--j){
                    int v = result.get(j).intValue();
                    v |= mask;
                    result.add(v);
                }
            }
            return result;
        }
    }
    主站蜘蛛池模板: 久久99国产亚洲精品观看| 亚洲国产成人久久精品app| 久久久久国产精品免费网站| 亚洲综合视频在线| 性色av免费观看| 中文字幕手机在线免费看电影 | 亚洲综合无码一区二区| 日韩一级视频免费观看| a毛片全部免费播放| 亚洲欧美日韩中文高清www777| 亚洲综合伊人久久综合| 少妇高潮太爽了在线观看免费| 一级中文字幕乱码免费| 亚洲一级毛片在线播放| 亚洲真人无码永久在线| 德国女人一级毛片免费 | 四虎影永久在线高清免费| 一级毛片**不卡免费播| 日本激情猛烈在线看免费观看 | 久9这里精品免费视频| 免费在线观看自拍性爱视频| 亚洲精品中文字幕乱码影院| 亚洲国产精品日韩专区AV| 国产免费久久精品99re丫y| 中文字幕无码一区二区免费| 男男gvh肉在线观看免费| 亚洲精品中文字幕乱码影院| 亚洲午夜未满十八勿入网站2| 女人18毛片特级一级免费视频| 久久青草国产免费观看| 一级做a毛片免费视频| 在线观看亚洲网站| 亚洲永久在线观看| 亚洲美女大bbbbbbbbb| 国产亚洲人成无码网在线观看| 国产免费观看视频| 免费观看美女裸体网站| 成人福利免费视频| 蜜桃AV无码免费看永久| 日本卡1卡2卡三卡免费| a级成人毛片免费图片|