<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;
        }
    }
    主站蜘蛛池模板: 九九精品国产亚洲AV日韩| 亚洲制服丝袜一区二区三区| 亚洲国产精品成人综合色在线| 95老司机免费福利| 久久国产亚洲精品无码| 久久免费区一区二区三波多野| 中文字幕不卡亚洲 | 亚洲成色WWW久久网站| 亚洲精品视频免费| 亚洲色欲久久久综合网东京热| 久久www免费人成看国产片| 中国亚洲女人69内射少妇| 最新久久免费视频| 亚洲高清中文字幕| 黄页网站在线看免费| 亚洲中文字幕无码久久2020| 国产精品免费一级在线观看| 全部一级一级毛片免费看| 国产偷窥女洗浴在线观看亚洲 | 无人视频免费观看免费视频| 亚洲男人第一无码aⅴ网站| 中文字幕免费在线观看动作大片| 亚洲人成网7777777国产| 一区二区三区在线免费看| 亚洲jizzjizz在线播放久| 日本黄色免费观看| 亚洲五月午夜免费在线视频| 日木av无码专区亚洲av毛片| 免费无码黄十八禁网站在线观看| 国产亚洲精品美女久久久久久下载| 亚洲一区二区三区在线播放| 久久精品国产大片免费观看| 亚洲熟妇无码AV| 亚洲人午夜射精精品日韩| 99精品一区二区免费视频| 亚洲精华国产精华精华液| 亚洲熟妇中文字幕五十中出| 亚洲高清视频免费| 成人a毛片免费视频观看| 亚洲视频国产精品| 免费一区二区视频|