2019-03-12-算法-进化(合并两个有序数组)
生活随笔
收集整理的這篇文章主要介紹了
2019-03-12-算法-进化(合并两个有序数组)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
給定兩個(gè)有序整數(shù)數(shù)組 nums1 和 nums2,將 nums2 合并到 nums1 中,使得 num1 成為一個(gè)有序數(shù)組。
說明:
- 初始化 nums1 和 nums2 的元素?cái)?shù)量分別為 m 和 n
- 你可以假設(shè) 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]思路1:最簡單的是先直接合并數(shù)組,然后再排序,代碼如下:
public void merge(int[] nums1, int m, int[] nums2, int n) {if(n<1) {return;}for(int i=0;i<n;i++) {nums1[i+m] = nums2[i];}Arrays.sort(nums1,0,m+n);}思路2: 從后往前排序, 時(shí)間復(fù)雜度為O(n)
public void merge(int[] nums1, int m, int[] nums2, int n) {int p = m-- + n-- -1;while(m>=0 && n>=0) {nums1[p--] = nums1[m]>nums2[n]?nums1[m--]:nums2[n--];}while(n>=0) {nums1[p--] = nums2[n--];}}總結(jié)
以上是生活随笔為你收集整理的2019-03-12-算法-进化(合并两个有序数组)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019-03-11-算法-进化(搜索二
- 下一篇: LOL等了半年的克隆模式,撸友们又要绝望