88. Merge Sorted Array

【题目】

Given two sorted integer arraysnums1_and_nums2, merge_nums2_into_nums1_as one sorted array.

Example:

Input:

nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3


Output:
 [1,2,2,3,5,6]

給定兩個有序整數數組 nums1nums2,將nums2合併到 nums1 使得 num1成為一個有序數組。

【思路】

倒過來開始會比較方便 因為後面有空位

【解法】

所以假設題目

    int\[\] nums1 = {1,2,3,0,0,0};

    int m = 3;

    int\[\] nums2 = {2,5,6};

    int n = 3;

定義好兩個陣列的最大指標值 p1=2 , p2=2

確認 nums1[p1] > nums2[p2] 3 > 6 False

所以nums1[5] = 6 , p2指標遞減

下一次就用 3 > 5 False

nums1[4] = 5 , p2指標遞減

下一次就用 3 > 2 True

2 > 2 False

直到其中一方指標小於0 那接下來就用不為0的那個陣列塞入

☆JAVA

  if(null != nums1 && null != nums2 && 0 != m && 0 != n && nums1.length == m+n) {

   int p1 = m-1;
    int p2 = n-1;
    for(int i = m+n-1;i >= 0;i--){
        if(p2 < 0 || (p1 >= 0 && nums1[p1] > nums2[p2])){
            nums1[i]=nums1[p1];
            p1--;
        }else{
            nums1[i]=nums2[p2];
            p2--;
        }
    }
}

results matching ""

    No results matching ""