LeetCode Easy 88合并分类数组
问题:
给定两个排序整数数组nums1和nums2,将nums2合并为nums1作为一个排序数组。
注意:
您可以假设nums1有足够的空间(大小大于或等于m + n)来保存nums2中的附加元素。在nums1和nums2中初始化的元素数分别为m和n。
我收到了一条错误,我在代码中发表了评论。我打印了index2和index3,它们都是零。它们应该是合法的。为什么我收到此错误?
任何帮助,我很感激。非常感谢你的时间!
class Solution
{
func merge(inout nums1:[Int], _ m: Int, _ nums2:[Int], _ n: Int)
{
var index1 = m - 1
var index2 = n - 1
var index3 = m + n - 1
while index2 >= 0 && index1 >= 0
{
if nums1[index1] > nums2[index2]
{
nums1[index3] = nums1[index1]
index3 -= 1
index1 -= 1
}
else
{
nums1[index3] = nums2[index2]
index3 -= 1
index2 -= 1
}
}
while index2 >= 0
{
print(index2)
print(index3)
nums1[index3] = nums2[index2] // fatal error: Index out of range
index3 -= 1
index2 -= 1
}
}
}
let test1 = Solution()
var haha = [Int]()
haha = []
test1.merge(&haha,0, [1],1)
print(haha)
答案 0 :(得分:0)
您的变量nums1
是一个0元素数组。所以没有空间让你做作业。也就是说,index3=0
并且您使用它来指向nums1
的第一个元素,但没有第一个元素。
例如,如果您更改:
haha = []
为:
haha = [0]
然后你的数组nums1
将在方法中有第0个元素。