89. 格雷编码

89. 格雷编码

89. 格雷编码_第1张图片


Java代码:2DFS

89. 格雷编码_第2张图片

class Solution {
    List<Integer> res = new ArrayList<>();

    public List<Integer> grayCode(int n) {
        dfs(n, new StringBuffer(), new int[]{0, 1});
        return res;
    }

    public void dfs(int n, StringBuffer sb, int[] nums){
        if(sb.length() == n){
            res.add(Integer.valueOf(sb.toString(), 2));
            return;
        }
        sb.append(nums[0]);
        dfs(n, sb, new int[]{0,1});
        sb.deleteCharAt(sb.length() - 1);
        sb.append(nums[1]);
        dfs(n, sb, new int[]{1, 0});
        sb.deleteCharAt(sb.length() - 1);
    }
}

你可能感兴趣的:(LeetCode刷题,算法)