Leetcode Merge Sorted Array
2017-06-17 19:01
316 查看
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.
方法一:想到的最直接的方法就是通过临时数组来实现归并算法
代码如下:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> temp;
int i=0,j=0;
while(i<m&&j<n)
{
if(nums1[i] < nums2[j])
{
temp.push_back(nums1[i]);
i++;
}
else
{
temp.push_back(nums2[j]);
j++;
}
}
while(i<m)
{
temp.push_back(nums1[i]);
i++;
}
while(j<n)
{
temp.push_back(nums2[j]);
j++;
}
nums1 = temp;
}
};
但是这么做空间复杂度为O(N),是否有更好的方法呢?
方法二:
当然有更好的办法,题目中特意提到了nums1可以容纳m+n个元素,所以我们可以从后往前进行复制,无需额外的空间资源
代码如下:
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.
方法一:想到的最直接的方法就是通过临时数组来实现归并算法
代码如下:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> temp;
int i=0,j=0;
while(i<m&&j<n)
{
if(nums1[i] < nums2[j])
{
temp.push_back(nums1[i]);
i++;
}
else
{
temp.push_back(nums2[j]);
j++;
}
}
while(i<m)
{
temp.push_back(nums1[i]);
i++;
}
while(j<n)
{
temp.push_back(nums2[j]);
j++;
}
nums1 = temp;
}
};
但是这么做空间复杂度为O(N),是否有更好的方法呢?
方法二:
当然有更好的办法,题目中特意提到了nums1可以容纳m+n个元素,所以我们可以从后往前进行复制,无需额外的空间资源
代码如下:
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int count = m+n-1; m--;n--; while(m>=0&&n>=0) nums1[count--] = (nums1[m] > nums2 ?nums1[m--]:nums2[n--]); while(m>=0) nums1[count--] = nums1[m--]; while(n>=0) nums1[count--] = nums2[n--]; } };
相关文章推荐
- LeetCode--merge-sorted-array
- leetcode笔记:Merge Sorted Array
- LeetCode-Merge Sorted Array
- [LeetCode] Merge Sorted Array
- 【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】
- leetcode 088 —— Merge Sorted Array
- leetcode 88: Merge Sorted Array
- [LeetCode] Merge Sorted Array [22]
- LeetCode Online Judge 题目C# 练习 - Merge Sorted Array
- LeetCode:Merge Sorted Array
- LeetCode Merge Sorted Array
- [LeetCode]Merge Sorted Array
- Java for LeetCode 088 Merge Sorted Array
- LeetCode - Merge Sorted Array
- Leetcode: Merge Sorted Array
- LeetCode 088 Merge Sorted Array
- Leetcode之Merge Sorted Array 问题
- LeetCode(40)-Merge Sorted Array
- (数组)leetcode 88:Merge Sorted Array
- 【LeetCode】Merge Sorted Array