2016-04-22 5 views
1

LeetCode Einfache 88 Merge sortiertes ArraySwift fatale Fehler: Index außerhalb des Bereichs

Frage:

zwei sortierte Integer Arrays Gegeben nums1 und nums2, nums2 in nums1 als ein sortiertes Array verschmelzen.

Hinweis:

Sie, dass nums1 annehmen kann, hat genügend Platz (Größe, die größer oder gleich m + n) additionalelements von nums2 zu halten. Die Anzahl der in nums1 und nums2 initialisierten Elemente ist m bzw. n.

Ich habe einen Fehler, den ich in meinem Code kommentiert habe. Ich habe den index2 und index3 gedruckt, beide sind null. Sie sollten legal sein. Warum habe ich diesen Fehler?

Jede Hilfe, ich schätze es. Vielen Dank für Ihre Zeit!

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) 

Antwort

0

Ihre Variable nums1 ist ein 0-Element-Array. Sie haben also keinen Platz für die Aufgabe. Das heißt, index3=0 und Sie verwenden das, um auf das erste Element von nums1 zu zeigen, aber es gibt kein erstes Element.

haha = [] 

zu:

haha = [0] 

dann das Array nums1 ein th 0-Element wird innerhalb der Methode

Wenn zum Beispiel Sie ändern.

+0

Vielen Dank! Es macht total Sinn für mich. Schätze deine Hilfe! – Tang