Leetcode 88. 合并两个有序数组 解题思路及C++实现
生活随笔
收集整理的这篇文章主要介绍了
Leetcode 88. 合并两个有序数组 解题思路及C++实现
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
解题思路:
定义三个指针,分别从 nums1 和 nums2 数组的尾部开始向前扫一遍,即可将最终的排序结果存储在nums1中,时间复杂度为 O(m+n)。
class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {int i = m - 1; //作为nums1数组的指针int j = n - 1; //作为nums2数组的指针int p = m + n - 1; //最终的nums1数组的位置指针while(j >= 0 && i >= 0){if(nums2[j] > nums1[i]){nums1[p--] = nums2[j--];}else{nums1[p--] = nums1[i--];}}while(i >= 0){nums1[p--] = nums1[i--];}while(j >= 0){nums1[p--] = nums2[j--];}} };
总结
以上是生活随笔为你收集整理的Leetcode 88. 合并两个有序数组 解题思路及C++实现的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Leetcode 963. 最小面积矩形
- 下一篇: Leetcode 167. 两数之和 I