问题描述如下:
给定两个排序整数数组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++];
}
}
}
答案 0 :(得分:1)
输入:[0] 0 [1] 1预期:[1]
0
为m
,1
为n
,其中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)