您的位置:首页 > 其它

leetcode Merge Sorted Array

2015-09-14 19:51 399 查看


Merge Sorted Array

My Submissions

Question
Solution

Total Accepted: 67179 Total
Submissions: 231573 Difficulty: Easy

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 nums1and nums2 are m and n respectively.

Show Tags

Show Similar Problems

该题不过就是两个指针分别往后遍历,但是在此题中采用的方法是把第二个串中的数字插入到第一个,这就导致第一个后面可能有0这种空间,最后删除了就好。

// test88MergeSortedArray.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include "vector"

using std::vector;

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n);

int _tmain(int argc, _TCHAR* argv[])

{

vector<int> a = {1,0};

vector<int> b = {2};

merge(a, 1, b, 1);

return 0;

}

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)

{

if (n == 0)

return;

else if (m == 0)

{

for (auto i = 0; i < n;i++)

{

nums1[i] = nums2[i];

// nums1.insert(nums1.begin() + i, nums2[i]);

}

return;

}

auto j = 0;

auto k = 0;

int addnum = 0;

while (j < (m + addnum) && k<n)

{

if (nums1[j] < nums2[k])

{

j++;

continue;

}

else

{

nums1.insert(nums1.begin() + j, nums2[k]);

addnum++;

k++;

j++;

}

}

if (k < n)

{

while (k < n)

{

nums1.insert(nums1.begin() + j, nums2[k]);

k++;

j++;

}

}

while (nums1.size() > m + n) //特别注意此处,原题中

{

auto num = nums1.end();

nums1.erase(num-1);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: