Skip to content

Latest commit

 

History

History
35 lines (31 loc) · 1001 Bytes

File metadata and controls

35 lines (31 loc) · 1001 Bytes

class Solution {

//用数组指针时,要特别注意边界问题,多用特殊cases检查边界问题 //fill the array from the end to begin

public void merge(int[] nums1, int m, int[] nums2, int n) {
    int p = m+n-1;
    int p1 = m-1;
    int p2 = n-1;
    while ( p2>=0) {
        // when nums1 reach the head, p1 will become -1
        if (p1 == -1 || nums1[p1] <= nums2[p2]) {
            nums1[p] = nums2[p2];
            p2--;
        }
        else{
            nums1[p] = nums1[p1];
            p1--;
        }
        p--;

        nums1[p--] = (p1 == -1 || nums1[p1] <= nums2[p2]) ? nums2[p2--] : nums1[p1--];
    }
}

}

//可以简化成四行 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int p1 = m - 1, p2 = n - 1, p = m + n - 1; while (p2 >= 0) { nums1[p--] = (p1 == -1 || nums1[p1] <= nums2[p2]) ? nums2[p2--] : nums1[p1--]; } } }