leetcode 88:Merge Sorted Array
2015-12-02 23:02
411 查看
题目:
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.
思路:
从最后一个元素开始比较,将较大的放到对应位置。
时间复杂度:O(m+n)
空间复杂度:O(1)
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (n == 0) return;
int count = m + n - 1;
n--;
if (m == 0)
{
while (n >= 0) nums1[count--] = nums2[n--];
return;
}
m--;
while (m >= 0 && n>=0)
{
nums1[count--] = nums1[m] < nums2
? nums2[n--] : nums1[m--];
}
if (m == 0) return;
while (n >= 0) nums1[count--] = nums2[n--];
}
};
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.
思路:
从最后一个元素开始比较,将较大的放到对应位置。
时间复杂度:O(m+n)
空间复杂度:O(1)
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (n == 0) return;
int count = m + n - 1;
n--;
if (m == 0)
{
while (n >= 0) nums1[count--] = nums2[n--];
return;
}
m--;
while (m >= 0 && n>=0)
{
nums1[count--] = nums1[m] < nums2
? nums2[n--] : nums1[m--];
}
if (m == 0) return;
while (n >= 0) nums1[count--] = nums2[n--];
}
};
相关文章推荐
- 世界杯预测(二) 球队近期状态模型
- 数据解析
- Sql语句:case when
- 可重入&不可重入
- [深度学习]Python/Theano实现逻辑回归网络的代码分析
- zjnu(1299)——零件分组(LIS变形)
- UVA 11729 任务安排 (贪心)
- OC基础(2)
- 分布式文件系统MFS、Ceph、GlusterFS、Lustre的比较
- Android笔记-前言
- OSX 10.10+Xcode5.1 无法启动或者安装应用程序到iOS 6.1 simulator
- 初识汉诺塔问题
- 利用Theano理解深度学习——Multilayer Perceptron
- 【iOS】libc++abi.dylib: terminate_handler unexpectedly threw an exception
- Android Studio 使用之一安装设置
- vector调用erase 后运行时异常vector iterators incompatible
- 【转】SVN提交一般原则
- theano中的scan用法
- 搭建redmine--RVM
- Java 线程学习