難度:簡單
型別:陣列
給你兩個有序整數陣列 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 有足夠的空間...