首页 > 代码库 > merge sorted array | leetcode
merge sorted array | leetcode
Given two sorted integer arrays nums1 and nums2, merge nums2 intonums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal tom +
n) to hold additional elements from nums2. The number of elements initialized innums1 and
nums2 are m and n respectively.
从给出的testcase来看似乎是默认升序排列的。首先将nums1扩充到m+n个元素,然后用i和j分别指向nums1和nums2原始元素的末尾,k指向扩充序列的末尾。
比较nums1和nums2末尾元素大小,填入扩充后序列的末尾。
一种可能的情况是i先到头了,j没有到头,这时把nums2里剩下的元素直接拷贝到nums1里。
对于j先到头,i没有到头的情况,无需额外处理,剩下的数字本来就在nums1的对应位置上。
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { bool incOrder = true; if (n == 0) return; if (m == 0) { nums1 = nums2; return; } int i , j; int k = m+n-1; for (i=nums1.size();i<m+n;i++) nums1.push_back(0); for (i=m-1,j=n-1;i>=0 && j>=0;) { nums1[k--] = (nums1[i] > nums2[j]) ? nums1[i] : nums2[j]; if (nums1[i] > nums2[j]) i --; else j--; } if (i<0) { while (j>=0) { nums1[j] = nums2[j]; j--; } } return ; } };
merge sorted array | leetcode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。