帶重複元素的數組全排列問題?給定兩個有序整數數組 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成為一個有序數組,我來為大家科普一下關于帶重複元素的數組全排列問題?下面希望有你要的答案,我們一起來看看吧!
帶重複元素的數組全排列問題
給定兩個有序整數數組 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]
解題思路:這題做法很多,這邊簡單采用時間複雜度0(n)的,一次遍曆即可。注意題目,數組nums1足夠大。
public void merge(int[] nums1, int m, int[] nums2, int n) { //先歸并大的,這樣一遍掃面即可。 for (int k = m n - 1, i = m - 1, j = n - 1; k >= 0; k--) { if (i < 0) { nums1[k] = nums2[j--]; continue; } if (j < 0) { nums1[k] = nums1[i--]; continue; } if (nums1[i] >= nums2[j]) nums1[k] = nums1[i--]; else nums1[k] = nums2[j--]; } }
,