首页 > 其他 > 详细

89. 格雷编码

时间:2021-06-26 16:45:29      阅读:18      评论:0      收藏:0      [点我收藏+]

设n阶格雷码集合为 G(n),则 G(n+1) 阶格雷码为:
  1.给 G(n)阶格雷码每个元素二进制形式前面添加0,得到 G‘(n)
  2.设 G(n)集合倒序(镜像)为 R(n),给 R(n)每个元素二进制形式前面添加 1,得到 R‘(n)
  3.G(n+1)=G‘(n)∪R‘(n)拼接两个集合即可得到下一阶格雷码

package leetcode;

import java.util.ArrayList;
import java.util.List;

public class demo_89 {
    public List<Integer> grayCode(int n) {
        List<Integer> list=new ArrayList<Integer>();
        list.add(0);
        int init=1;
        for(int i=0;i<n;i++) {
            for(int j=list.size()-1;j>=0;j--) {
                //由于最高位前默认为0,因此G‘(n) = G(n),只需在即G(n)后添加 R‘(n)即可
                list.add(list.get(j)+init);
            }
            //执行init= 1 << i 计算出对应位数,以给 R(n)R(n) 前添加 11 得到对应 R‘(n)R 
            init=init<<1;
        }
        System.out.println(list);
        return list;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_89 d89 =new demo_89();
        d89.grayCode(2);
    }

}

 

89. 格雷编码

原文:https://www.cnblogs.com/Yshun/p/14934415.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!