給定兩個有序整數陣列 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]
思路:o(n+m)
與合併鍊錶差不多.不過合併陣列讓我想到了歸併排序的歸併步驟.
正序掃瞄的話,如果不開闢乙個新的臨時陣列,插入時效率會很低,所以必須開闢乙個新的臨時陣列.掃瞄完再copy回nums1. 中間花費的時間很多.
倒序掃瞄的話,不需要開闢新的陣列,雖然步驟一樣,但省去了很多操作,效率高.
1class
solution88
13if (currnums1 >=m)
17 } else21}
2223 system.arraycopy(temparray, 0, nums1, 0, nums1.length);
24for (int i = 0; i < nums1.length; i++) 27}
2829
//倒序
30public
void merge_2(int nums1, int m, int nums2, int
n) 39
40while (currnums1 >= 0)
4344
while (currnums2 >= 0)
4748}49
50 }
LeetCode第88題 合併兩個有序陣列
題目 題目描述 給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2...
LeetCode 題 88 合併兩個有序陣列
給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例 輸...
LeetCode刷題之路 88 合併兩個有序陣列
給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例...