leetcode Merge Sorted Array
2015-09-14 19:51
399 查看
Merge Sorted Array
My SubmissionsQuestion
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);
}
}
相关文章推荐
- 10026 - Shoemaker's Problem(贪心)
- ubuntu下安装程序的三种方法
- UIday1501:NSString的几种常用方法
- hdu 1025 Constructing Roads In JGShining’s Kingdom 【dp+二分法】
- LeetCode(65) Valid Number
- 论题Cascade Object Detection with Deformable Part Models一个怀疑
- Android特效 五种Toast详解
- stackstack pillar and grains
- 虚拟机双网卡配置以及注意事项
- 使用SetSysColors 修改系统颜色
- 使用FileReader类、BufferedReader类、FileInputStream类三种方式输出
- codeforces 126B B. Password(kmp+dp)
- 学生有自己的, 其他生活
- web前端优化--DOM性能优化
- [JavaWeb基础] 018.Struts2 Action通配符使用
- 页面整体布局
- 自学QT之数字时钟
- 修改编辑框禁用状态文字颜色的方法
- 黑马程序员-------C语言----指针做函数参数
- 如何利用php+sql建立留言板