Datawhole第九天打卡

第一题:合并两个有序数组

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。

你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

示例:

输入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6],      n = 3

输出: [1,2,2,3,5,6]

public class Solution

{

    public void Merge(int[] nums1, int m, int[] nums2, int n)

    {

        int j = 0;

        for (int i = 0; i < n; i++)

        {

            int num2 = nums2[i];

            while (num2 > nums1[j] && j < m)

            {

                j++;

            }

            int k = m;

            while (k > j)

            {

                nums1[k] = nums1[k - 1];

                k--;

            }

            m++;

            nums1[j] = num2;

        }

    }

}

第二题:格雷编码

格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。

给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。

示例 1:

输入: 2

输出: [0,1,3,2]

解释:

00 - 0

01 - 1

11 - 3

10 - 2

对于给定的 n,其格雷编码序列并不唯一。

例如,[0,2,3,1] 也是一个有效的格雷编码序列。

00 - 0

10 - 2

11 - 3

01 - 1

示例 2:

输入: 0

输出: [0]

解释: 我们定义格雷编码序列必须以 0 开头。

    给定编码总位数为 n 的格雷编码序列,其长度为 2^n。

    当 n = 0 时,长度为 2^0 = 1。

    因此,当 n = 0 时,其格雷编码序列为 [0]。

public class Solution

{

    public IList GrayCode(int n)

    {

        IList lst = new List();

        lst.Add(0);

        for (int i = 1; i <= n; i++)

        {

            for (int j = lst.Count - 1; j >= 0; j--)

            {

                int item = lst[j] + (1 << i - 1);

                lst.Add(item);

            }

        }

        return lst;

    }

}

第三题:二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7]

    3

  / \

  9  20

    /  \

  15  7

返回它的最大深度 3 。

public class Solution

{

    public int MaxDepth(TreeNode root)

    {

        if (root == null)

            return 0;

        Queue q = new Queue();

        int deep = 0;

        q.Enqueue(root);

        while (q.Count != 0)

        {

            deep++;

            int count = 0;

            int size = q.Count;

            while (count < size)

            {

                TreeNode node = q.Dequeue();

                count++;

                if (node.left != null)

                    q.Enqueue(node.left);

                if (node.right != null)

                    q.Enqueue(node.right);

            }

        }

        return deep;

    }

}

你可能感兴趣的:(Datawhole第九天打卡)