跳至主要內容

格雷码

小于 1 分钟

格雷码

题目难度
89. 格雷编码open in new window中等
1238. 循环码排列open in new window中等

定义

int g(int n) { return n ^ (n >> 1); }

89. 格雷编码

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

public class Solution89 {
    public List<Integer> grayCode(int n) {
        List<Integer> resList = new ArrayList<>();
        for (int i = 0; i < (1 << n); i++) {
            resList.add(g(i));
        }
        return resList;
    }

    private int g(int n) {
        return n ^ (n >> 1);
    }
}

1238. 循环码排列

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

public class Solution1238 {
    public List<Integer> circularPermutation(int n, int start) {
        List<Integer> resList = new ArrayList<>();
        for (int i = 0; i < (1 << n); i++) {
            resList.add(start ^ g(i));
        }
        return resList;
    }

    private int g(int n) {
        return n ^ (n >> 1);
    }
}

(全文完)