我无法理解Merge Sorted Array的示例测试用例?

时间:2017-11-29 14:14:08

标签: java arrays algorithm sorting

问题描述如下:

  

给定两个排序整数数组nums1和nums2,将nums2合并为nums1作为一个排序数组。

     

注意:   您可以假设nums1有足够的空间(大小大于或等于m + n)来保存nums2中的其他元素。在nums1和nums2中初始化的元素数分别为m和n。

leetcode给出了一个示例案例:

  

输入:[0] 0 [1] 1预期:[1]

我不明白。难道答案不应该是[0,1]吗?因为0和1都插入了。任何人都可以解释一下吗?

这是我的代码:

class Solution {
    public void merge(int[] nums1, int m, int[] nums2, int n) {

        int i = 0;
        int j = 0;
        int index = 0;
        int []result = new int[nums1.length + nums2.length];

        if (nums1 == null || nums2 == null) {
            result = null;
        }

        while (i < nums1.length && j < nums2.length) {
            if (nums1[i] < nums2[j]) {
                result[index++] = nums1[i++];
            }
            else {
                result[index++] = nums2[j++];
            }
        }

        while (i < nums1.length) {
            result[index++] = nums1[i++];
        }
        while (j < nums2.length) {
            result[index++] = nums2[j++];
        }

    }
}

2 个答案:

答案 0 :(得分:1)

输入:[0] 0 [1] 1预期:[1]

0m1n,其中m为第一个数组中的元素数,n为第二个数组中的元素数。

因此,第一个数组不包含元素0。实际上,它根本不包含任何元素(0)。第一个数组中的[0]实际上是要合并的元素的占位符(因为第一个数组的大小应该是(m+n)。所以合并它们会得到一个输出{{1这只是合并到第一个数组中的第二个数组的元素。

以下是我的问题代码:

[1]

答案 1 :(得分:0)

给定两个已排序的整数数组 nums1 和 nums2,将 nums2 合并为 nums1 作为一个已排序数组。

nums1和nums2中初始化的元素个数分别为m和n。您可以假设 nums1 有足够的空间(大小等于 m + n)来容纳来自 nums2 的其他元素。

我正在用 Python 发布解决方案。

请找到代码。

分析- 只需检查第一个列表中的零,然后用第二个列表中的元素替换。 如果列表中的任何一个为空,则只打印列表 1。

定义合并(nums1,m,nums2,n):

a=len(nums1)
i=0
j=0
while i< a:
    if n  == 0 or m==0 :
        return nums1
    if nums1[i]==0:
        nums1[i]=nums2[j]
        j+=1
    i+=1
return sorted(nums1)