LeetCode 之合併兩個有序陣列
阿新 • • 發佈:2018-11-07
問題描述:
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。
說明:
- 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。
- 你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。
示例:
輸入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 輸出:[1,2,2,3,5,6]
大神程式碼 一次遍歷 4種情況 完美
class Solution { public void merge(int[] a, int m, int b[], int n) { int p1 = m - 1; int p2 = n - 1; int p = m + n -1; while (p1 >= 0 || p2 >= 0) { // either one of the arrays are non-empty //4 cases if (p1 < 0) { a[p--] = b[p2--]; } else if (p2 < 0) { a[p--] = a[p1--]; } else if (a[p1] < b[p2]) { a[p--] = b[p2--]; } else { a[p--] = a[p1--]; } } } }