88. Merge Sorted Array
2016-11-13 09:42
190 查看
Given two sorted integer arrays
Note:
You may assume that
思路:参考Merge Sort,也就是Introduction to Algorithms(2nd Edition) p29的
不过这道题目里面我们是从nums的m + n - 1位向前倒着比较然后merge sort的,这样可以省去额外的空间。最后,考虑如果nums2的长度比nums1长的话,就直接把nums2的后面部分直接逆序贴到nums1上去。
代码如下:
Time: O(m + n).
Space: O(1).
相关题目:
nums1and
nums2, merge
nums2into
nums1as one sorted array.
Note:
You may assume that
nums1has enough space (size that is greater or equal to
m + n)to hold additional elements from
nums2. The number of elements initialized in
nums1and
nums2are
mand
nrespectively.
思路:参考Merge Sort,也就是Introduction to Algorithms(2nd Edition) p29的
line 10 - line 17:
i <- 1 j <- 1 for k <- p to r do if L[i] <= R[j] then A[k] <- L[i] i <- i + 1 else A[k] <- R[j] j <- j + 1
不过这道题目里面我们是从nums的m + n - 1位向前倒着比较然后merge sort的,这样可以省去额外的空间。最后,考虑如果nums2的长度比nums1长的话,就直接把nums2的后面部分直接逆序贴到nums1上去。
代码如下:
class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int a = m - 1, b = n - 1, i = m + n - 1; while(a >= 0 && b >= 0){ if(nums1[a] > nums2[b]) nums1[i--] = nums1[a--]; else nums1[i--] = nums2[b--]; } while(b >= 0){ nums1[i--] = nums2[b--]; } } };
Time: O(m + n).
Space: O(1).
相关题目:
相关文章推荐
- 88 Merge Sorted Array
- leetcode 88 Merge Sorted Array C++
- leetcode-56&88 Merge Intervals && Merge Sorted Array
- Java [Leetcode 88]CMerge Sorted Array
- 【leetcode】【88】Merge Sorted Array
- 【leetcode c++】88 Merge Sorted Array
- leetcode——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 OJ 88 Merge Sorted Array [Easy]
- [88]Merge Sorted Array
- [88] Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- 88. Merge Sorted Array
- leetcode_question_88 Merge Sorted Array