2016-04-22 3 views
1

LeetCode Easy 88 Объединить отсортированный массивSwift фатальная ошибка: индекс вне диапазона

Вопрос:

Учитывая отсортированные целые массивы nums1 и nums2, сливаться nums2 в nums1 как один отсортированный массив.

Примечание:

Вы можете предположить, что nums1 имеет достаточно пространства (размер, который больше или равен т + п) провести additionalelements из 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

Ваша переменная nums1 является массив 0-элемент. Таким образом, вам не нужно делать задание. То есть index3=0, и вы используете это, чтобы указать на первый элемент nums1, но нет первого элемента.

Если, например, вы меняете:

haha = [] 

к:

haha = [0] 

, то ваш массив nums1 будет 0-й элемент внутри метода.

+0

Большое вам спасибо! Для меня это имеет смысл. Ценю вашу помощь! – Tang

Смежные вопросы