合并两个有序数组(双/三指针)
生活随笔
收集整理的這篇文章主要介紹了
合并两个有序数组(双/三指针)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天寫作業,合并兩個有序數組a和b,時間復雜度要求O(n),空間復雜度要求O(1)。
很快想到創建第三個數組c,用雙指針初始化指向a和b的頭元素,每次選擇較大者在c上尾插進去之后,再后移相對應a或者b上的指針。
public static int[] merge(int[] a, int[] b) {int[] ans = new int[a.length + b.length];int i = 0, j = 0, n = 0;while (i < a.length && j < b.length) {if (a[i] <= b[j]) {ans[n++] = a[i++];}if (a[i] > b[j]) {ans[n++] = b[j++];}while (i < a.length) {ans[n++] = a[i++];}while (j < b.length) {ans[n++] = b[j++];}}return ans; }其實有另外一種解法,可以在原數組上操作:
總結
以上是生活随笔為你收集整理的合并两个有序数组(双/三指针)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广州交通大学二年级算法实验题目(第一弹)
- 下一篇: 没有收到回复的同学注意了,用它一键查询!