leetcode88---Merge Sorted Array(合并有序数组)
来源:互联网 发布:中国象棋软件哪个好 编辑:程序博客网 时间:2024/05/18 00:41
问题描述:
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.
两个有序数组A[],B[],假设A有足够空间,将两个数组合并到A中,使之有序。
问题求解:
方法一:从后往前遍历两数组(尾插法),将大的放在后面,无需另外开辟空间,时间复杂度度O(m+n)。
class Solution {public://时间复杂度O(m+n) void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int index = m+n-1;//合并后数组索引 int aindex = m-1;//a数组索引 int bindex = n-1;//b数组索引 while(aindex >= 0 && bindex >= 0) {//从后往前遍历,把最大的放在最后面 if(nums1[aindex] > nums2[bindex]) { nums1[index--] = nums1[aindex--]; } else { nums1[index--] = nums2[bindex--]; } } while(aindex >= 0) { nums1[index--] = nums1[aindex--]; } while(bindex >= 0) { nums1[index--] = nums2[bindex--]; } }};
更简洁一点:
class Solution {public://时间复杂度O(m+n) void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int index = m+n-1;//合并后数组索引 int aindex = m-1;//a数组索引 int bindex = n-1;//b数组索引 while(aindex >= 0 && bindex >= 0) {//从后往前遍历,把最大的放在最后面 nums1[index--] = nums1[aindex]>nums2[bindex]?nums1[aindex--]:nums2[bindex--]; } while(aindex >= 0) { nums1[index--] = nums1[aindex--]; } while(bindex >= 0) { nums1[index--] = nums2[bindex--]; } }};
方法二:从前往后遍历数组,需要另开辟一个临时数组,不如方法一更优。
class Solution {public://时间复杂度O(m+n) 空间复杂度O(m+n) void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int index = 0;//合并后数组索引 int aindex = 0;//a数组索引 int bindex = 0;//b数组索引 int tmp[m+n];//开辟一个临时数组 while(aindex < m && bindex < n) {//从前往后 tmp[index++] = nums1[aindex]<nums2[bindex]?nums1[aindex++]:nums2[bindex++]; } while(aindex < m) { tmp[index++] = nums1[aindex++]; } while(bindex < n) { tmp[index++] = nums2[bindex++]; } //将临时数组的数放到a数组 while(--index >= 0) {//因为前面index++完后index多加一次,因此首先要--index nums1[index] = tmp[index]; } }};
0 0
- leetcode88---Merge Sorted Array(合并有序数组)
- Merge Sorted Array 合并两个有序数组
- Merge Sorted Array -- 合并两个有序数组
- Merge Sorted Array合并两个有序数组
- leetcode Merge Sorted Array 合并有序数组
- 88. Merge Sorted Array 合并有序数组
- LeetCode88 Merge Sorted Array
- leetCode88:Merge Sorted Array
- leetcode88:Merge Sorted Array
- Leetcode88. Merge Sorted Array
- leetcode88~Merge Sorted Array
- LeetCode88. Merge Sorted Array
- leetcode88 merge sorted array
- leetcode88. Merge Sorted Array
- LeetCode88 Merge Sorted Array
- Merge Sorted Array 合并两个有序数组 @LeetCode
- 【LeetCode】- Merge Sorted Array (合并有序数组).
- (每日算法)LeetCode -- Merge Sorted Array (合并有序数组)
- 图像算法---磨皮算法研究汇总
- iOS_Swift之UICollectionView详解
- EL 单选框的显示
- 10大流行编程语言和它们的创造者
- 数据库设计三大范式
- leetcode88---Merge Sorted Array(合并有序数组)
- uva548 Tree
- table 中,如何使得单元格的内容不换行,单元格不被撑开,显示不下的时候在结尾处显示“...”
- 为何编程难以管理?
- zTree实现异步加载数据(使用SPRING MVC4+mybatis3.8)
- openface在liunx下配置
- [二叉树]面试题2
- Web前端开发知识结构
- PHP 对象序列化