LeetCode合併兩個有序陣列(逆向雙指標)

垂序葎草發表於2024-04-04

原題解

題目

解法

逆向雙指標

演算法數學驗證

是先假設符合空間要求,化簡公式得到的p2正好取值在[0, n],符合要求

程式碼
public void merge(int[] nums1, int m, int[] nums2, int n) {

    int a = m - 1, b = n - 1, c = m + n - 1;

    while (a >= 0 && b >= 0) {
        nums1[c--] = nums1[a] > nums2[b] ? nums1[a--] : nums2[b--];
    }

    while (a >= 0) {
        nums1[c--] = nums1[a--];
    }

    while (b >= 0) {
        nums1[c--] = nums2[b--];
    }

}

相關文章