88. Merge Sorted Array

来源:互联网 发布:37轩辕剑骑兵进阶数据 编辑:程序博客网 时间:2024/06/05 01:16

问题描述

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:
You may assume that nums1 has enough space (size that is greater or equal to m+n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

题目链接:


思路分析

给出两个已经排序的数组,将数组nums1变成两个数组合并后的已排序数组。可以认为nums1在初始化的开始就有足够的空间容纳所有的m+n个元素

代码

class Solution {public:    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {        int i = m - 1, j = n - 1;        while(i >= 0 && j >= 0){//倒序循环,从大到小排序            if (nums1[i] >= nums2[j]){                nums1[i+j+1] = nums1[i];                i--;            }            else{                nums1[i+j+1] = nums2[j];                j--;            }           }        for(int i = 0; i <= j; i++){//nums1为空或者nums2还有剩下的元素比nums1[0]还小,就放在最前面                nums1[i] = nums2[i];        }    }};

时间复杂度:O(m+n)


反思

虽然很丑陋,但是蜜汁快,3ms过。

原创粉丝点击