LeetCode之88 合併兩個有序陣列

2021-10-06 10:26:14 字數 1245 閱讀 4266

難度:簡單

型別:陣列

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。

說明:初始化 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]

第一種演算法,暴力破解,借用了單鏈表歸併遞增的思路。通過兩個指標i和j分別掃瞄陣列nums1和nums2,比較nums1[i]和nums2[j]的值,將小的數儲存到結果陣列中,如果nums1[i]>nums2[j]那麼儲存nums2[j],如果nums1[i]第二種演算法,思路是首先將nums1和nums2融合,即當作乙個陣列處理。然後遍歷nums1陣列中的原nums2的元素,將其與原nums1的元素作比較,如果nums2的比較小則交換兩個元素的位置,最後即為所得。

第一種演算法:暴力破解

/**

* 合併兩個有序陣列

** @param nums1 有序整數陣列

* @param m 初始化nums1的元素數量

* @param nums2 有序整數陣列

* @param n 初始化nums2的元素數量

*/public void merge(int nums1, int m, int nums2, int n) else

}while (i < nums1.length - n)

while (j < nums2.length)

for (int q = 0; q < result.length; q++)

}

第二種演算法:

/**

* 合併兩個有序陣列(第二種演算法)

** @param nums1 有序整數陣列

* @param m 初始化nums1的元素數量

* @param nums2 有序整數陣列

* @param n 初始化nums2的元素數量

*/public void merge(int nums1, int m, int nums2, int n)

for(int i=m;i}

}}

88 合併兩個有序陣列 LeetCode

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。分析 方...

leetcode演算法練習 88 合併兩個有序陣列

所有題目源 git位址 題目給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存...

leetcode 88 合併兩個有序數

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。說明 示例 輸入 nums1 1,2,3,0,0,0 m 3 nums2 2,5,6 n 3 輸出 1,2,2,3,5,6 我覺得這道題有點問題。假設 nums1 有足夠的空間...