(数组)leetcode 88:Merge Sorted Array

原创 2016年01月07日 22:54:10

水平有限,不足之处还望指正。

题目:

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.

题意:

给出两个有序的数组nums1和nums2,合并nums2到nums1中并保持原有顺,已确保nums1有足够的空间。

解题思路:

这里给出升序合并。在nums1(从m+n-1递减)的尾部从后向前逐个插入nums1(从m-1递减)与nums2(从n-1递减)中较大的数。时间复杂度为O(m+n)

AC代码如下(含有main函数,VS2013中可直接运行):

#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
	//升序合并
	//首先确保nums1的大小至少等于m+n
	void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {

		int index = m + n - 1;
		int s1Index = m - 1;
		int s2Index = n - 1;
		//从后向前逐个插入nums1与nums2中较大的数
		while (s1Index>=0 && s2Index>=0)
		{
			nums1[index--] = nums2[s2Index] >= nums1[s1Index] ? nums2[s2Index--] : nums1[s1Index--];
		}
		while (s1Index>=0)
		{
			nums1[index--] = nums1[s1Index--];
		}
		while (s2Index >= 0)
		{
			nums1[index--] = nums2[s2Index--];
		}
	}
};
int main()
{
	vector<int> nums1 = { 1, 5, 7, 9 };
	vector<int> nums2 = { 2, 4, 6, 8, 10 };

	Solution my_solution;
	
	int n = nums2.size();
	while (n > 0)
	{
		nums1.push_back(0);
		n--;
	}
	my_solution.merge(nums1, nums1.size()-nums2.size(), nums2, nums2.size());

	for (int i = 0; i < nums1.size(); i++)
		cout << nums1[i] << " ";
	cout << endl;

	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode88---Merge Sorted Array(合并有序数组)

问题描述:Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Not...
  • will130
  • will130
  • 2016年01月14日 18:03
  • 217

LeetCode 88 Merge Sorted Array(合并排序数组)(*)

翻译给定两个排序的整型数组nums1和nums2,将nums2合并到nums1成一个排序数组。批注: 你可以假设nums1中有足够的空间(空间大于或等于m+n)来存放来自nums2的额外元素。 num...
  • NoMasp
  • NoMasp
  • 2016年01月24日 12:06
  • 3720

LeetCode 88. Merge Sorted Array 归并的过程

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. 题意:对于...

[LeetCode]--88. Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: Y...

[leetcode]88. Merge Sorted Array (java)

题目描述: Merge two sorted linked lists and return it as a new list. The new list should be made by sp...

Leetcode 88. Merge Sorted Array

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note: Y...

LeetCode 88 — Merge Sorted Array(C++ Java Python)

题目:http://oj.leetcode.com/problems/merge-sorted-array/ Given two sorted integer arrays A and B, mer...

[LeetCode]88.Merge Sorted Array

【题目】 Given two sorted integer arrays A and B, merge B into A as one sorted array. Note: You may a...

【leetcode c++】88 Merge Sorted Array

Merge Sorted Array Given two sorted integer arrays nums1 andnums2, merge nums2 into nums1 as one sor...
  • hqq39
  • hqq39
  • 2015年07月27日 14:27
  • 801

LeetCode笔记:88. Merge Sorted Array

合并两个排序好的数组为一个排序好的数组
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(数组)leetcode 88:Merge Sorted Array
举报原因:
原因补充:

(最多只允许输入30个字)