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]
給定兩個有序整數數組 nums1和nums2,將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--;
}
}
}