數論 C 006 合併兩個有序陣列(雙指標)

2021-09-26 00:07:22 字數 1063 閱讀 1163

、將給定陣列(都有序) nums2 合併到 nums1 中,使得 num1 成為乙個有序陣列。

說明:

輸入:

nums1 = [1,2,3,0,0,0], m = 3

nums2 = [2,5,6], n = 3

輸出:[1,2,2,3,5,6]

雙指標 / 從前往後,開闢另外乙個輔助陣列。

一般而言,對於有序陣列可以通過 雙指標法 達到o(n+m)的時間複雜度。

指標p1—>nums1, 指標p2—>nums2

在每一步中將比較得出的minone放入輸出陣列中。

nums1是用於輸出的陣列,需將nums1中的前m個元素放在其他地方。

使 while 退出的原因有二:p1 或 p2 到了陣列的末尾的後一位。

public

void

merge

(int

nums1,

int m,

int[

] nums2,

int n)

// 3.1 p2 到了陣列末尾後一位

if(p0 < m)

// 3.2 p0 到了陣列末尾的後一位

if(p2 < n)

}

前提:只適用於nums1.length = nums2.length + 陣列1實際元素長度。雙指標 / 從後往前

《005 刪除排序陣列中的重複項 ii》— 【雙指標】

《007 驗證回文串》— 【雙指標】

合併兩個有序陣列 c

題目描述 給定兩個有序整數陣列 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 思路1 建立乙個新的向量陣列,很常規的乙個思...

合併兩個有序陣列C

題目描述 有兩個排序的陣列a1和a2,內存在a1的末尾有足夠的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入到a1中,並且所有的數字是排序的。思路分析 從尾到頭邊比較,邊移入正確的位置,時間複雜度為o n include using namespace std void combin2ar...

合併兩個有序陣列(C )

合併兩個有序陣列 思路兩個陣列都非空 記兩個陣列分別為v1,v2,合併後的陣列為vc,設定兩個指標i j分別指向陣列v1,v2,令i j 0,若v1 i v2 j 則可以一直新增v1的元素到合併後的陣列vc直到條件不滿足,同時修改i 新增v2的元素到vc 如果乙個陣列被遍歷完,則應該終止 新增未遍歷...