DataWhale task08

合并两个有序数组

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        int len = m+n-1;
        int len1 = m-1;
        int len2 = n-1;
        while(len2>=0){
            while(len1>=0&&nums1[len1]>nums2[len2]){
                nums1[len]= nums1[len1];
                len--;
                len1--;
            }
            nums1[len] = nums2[len2];
            len--;
            len2--;
        }

    }
    }

格雷编码

class Solution {
    public List grayCode(int n) {
        List res = new ArrayList<>();
        res.add(0);
        int cur;
        for (int i = 0; i < n; i++) {
            int change = 1 << i;
            cur = res.size() - 1;            
            while(cur >= 0) {
                res.add(res.get(cur) ^ change);
                cur--;
            }       
        }
        return res;
    }
}

二叉树的最大深度

class Solution {
    int maxLevel = 0;

    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        dfs(root, 1);
        return maxLevel;
    }

    public void dfs(TreeNode root, int level) {
        if (root == null)
            return;
        if (level > maxLevel) maxLevel = level;
        dfs(root.left, level + 1);
        dfs(root.right, level + 1);
    }
}

你可能感兴趣的:(DataWhale task08)