88. Merge Sorted Array
2018-03-20 22:55
357 查看
Description
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.
Solution
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = m + n - 1; int j = m - 1; int k = n - 1; while(i >= 0) { if(j >= 0 && k >= 0) { if(nums1[j] > nums2[k]) { nums1[i] = nums1[j]; j--; } else { nums1[i] = nums2[k]; k--; } } else if(j >= 0) { nums1[i] = nums1[j]; j--; } else if(k >= 0) { nums1[i] = nums2[k]; k--; } i--; } } };
Analysis
因为nums1和nums2都已经是排好序的数组,我们只需要从后往前比较就可以了。假设nums1有足够的空间容纳nums1 + nums2,我们使用游标i指向m + n - 1,也就是最大数值存放的地方,从后往前遍历nums1,nums2,谁大就放到i这里。同时,还要检查两个数组谁先遍历完,当其中一个数组遍历完后,直接将没遍历完的数组里的元素拷贝在nums1[ i ]中,最后i减1。依次进行下去直到循环结束。相关文章推荐
- Leet Code OJ 88. Merge Sorted Array [Difficulty: Easy]
- Leetcode Everyday: 88. Merge Sorted Array
- 【leetcode】88. Merge Sorted Array
- [LeetCode] 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- [LeetCode] 88. Merge Sorted Array
- [勇者闯LeetCode] 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- 88. Merge Sorted Array
- 【LeetCode】88. Merge Sorted Array
- [leetcode]#88. Merge Sorted Array
- 88. Merge Sorted Array
- 【LeetCode】88. Merge Sorted Array (2 solutions)
- 88. Merge Sorted Array
- LeetCode 88. Merge Sorted Array
- LeetCode - 88. Merge Sorted Array
- 88. Merge Sorted Array
- [leetcode]88. Merge Sorted Array