簡體   English   中英

快速致命錯誤:指數超出范圍

[英]Swift fatal error: Index out of range

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)

您的變量nums1是一個0元素數組。 所以沒有空間讓你做作業。 也就是說, index3=0並且您使用它來指向nums1的第一個元素,但是沒有第一個元素。

例如,如果您更改:

haha = []

至:

haha = [0]

那么你的數組nums1將在方法中有一個第0個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM