88. Merge Sorted Array
2017-02-25 23:12
239 查看
问题描述
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.
解决思路
不能用额外内存,要么就是正向一个一个比较,比较到nums1的数值比nums2大时,将该位置的nums1及其以后的数值都平移到后面去。。。然后这种做法很蠢,而且情况复杂,而且复杂度不一定是0(m+n)。。。 其实从后面开始比较,倒序插入就很简单。。。
po上我前向比较的代码吧。。。 思路太死板了啊。
代码
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.
解决思路
不能用额外内存,要么就是正向一个一个比较,比较到nums1的数值比nums2大时,将该位置的nums1及其以后的数值都平移到后面去。。。然后这种做法很蠢,而且情况复杂,而且复杂度不一定是0(m+n)。。。 其实从后面开始比较,倒序插入就很简单。。。
po上我前向比较的代码吧。。。 思路太死板了啊。
代码
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { if (m == 0) nums1 = nums2; else if (n == 0) return; int i1 = 0 , i2 = 0; int count = m + n; while(i1 < count) { if (i1 < m && i2 < n && nums1[i1] > nums2[i2]) { int k = i2; for (k = i2; k < n; ++k) if(nums2[k] > nums1[i1]) break; k = k - i2; for (int i = m-1; i >= i1; --i) { nums1[i+k] = nums1[i]; } for ( int i = 0; i < k; ++i) { nums1[i+i1] = nums2[i2+i]; } i1 = i1 + k; i2 = i2 + k; m += k; if (i2 == n) break; } else if (i1 < m && i2 < n){ ++i1; } else if (i1 == m) { for (int i = i2; i < n; ++i) nums1[i1+i-i2] = nums2[i]; break; } } } };
相关文章推荐
- LeetCode88——Merge Sorted Array
- leetcode 88:Merge Sorted Array
- 【LeetCode 88_数组】Merge Sorted Array
- [leedcode 88] Merge Sorted Array
- 88. Merge Sorted Array
- Leetcode-88 Merge Sorted Array
- [LeetCode-88] Merge Sorted Array(合并有序数组)
- Leetcode 88 Merge Sorted Array
- [Leetcode 88, Easy] Merge Sorted Array
- leetcode[88]Merge Sorted Array
- 88. Merge Sorted Array
- 88 Merge Sorted Array
- 88. Merge Sorted Array LeetCode
- LeetCode88 Merge Sorted Array
- 88. Merge Sorted Array
- 【LeetCode 88 】 Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- Leetcode 88 Merge Sorted Array
- 88 Merge Sorted Array