※ Leetcode - Array - 88. Merge Sorted Array(快速归并两个有序数组)
来源:互联网 发布:淘宝卖农产品赚钱吗 编辑:程序博客网 时间:2024/06/05 19:23
1. Problem 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.
高效归并两个有序数组。
2. My solution1 (另开空间从前往后)
从前往后合并,用两个指针分被指向两个数组当前最小元素,需要另开辟一个数组。
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int It1=0,It2=0,It=0; vector<int>res; while(It<m+n) { if(It1<m&&It2<n) { if(nums1[It1]<=nums2[It2]) res.push_back(nums1[It1++]); else res.push_back(nums2[It2++]); It++; } if(It1>=m) { while(It2<n) res.push_back(nums2[It2++]),It++; break; } if(It2>=n) { while(It1<m) res.push_back(nums1[It1++]),It++; break; } } nums1.clear(); for(int i=0; i<m+n; i++) nums1.push_back(res[i]); res.clear(); }
3. My solution2(in place归并,从后往前)
PS:
有一组样例是
nums1={0},m=0;
nums2={1],n=1.
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int It1=m-1,It2=n-1,It=m+n-1; for(int i=0; i<n+m-nums1.size(); i++)//z1!!!!!样例中存在m比实际size小的情况!!!!! nums1.push_back(0); while(It>=0) { if(It1>=0&&It2>=0) { if(nums1[It1]>=nums2[It2]) nums1[It--]=nums1[It1--]; else nums1[It--]=nums2[It2--]; } else if(It1<0) { while(It2>=0) nums1[It--]=nums2[It2--]; break; } else { while(It1>=0) nums1[It--]=nums1[It1--]; break; } } }
0 0
- ※ Leetcode - Array - 88. Merge Sorted Array(快速归并两个有序数组)
- LeetCode | Merge Sorted Array(归并有序数组)
- Merge Sorted Array:归并有序数组
- Merge Sorted Array 合并两个有序数组 @LeetCode
- LeetCode—Merge Sorted Array两个有序数组排序
- Merge Sorted Array 合并两个有序数组
- Merge Sorted Array -- 合并两个有序数组
- Merge Sorted Array合并两个有序数组
- leetcode Merge Sorted Array 合并有序数组
- [LeetCode] Merge Sorted Array 归并排序数组
- (LeetCode)Merge Sorted Array --- 归并数组
- LeetCode 88. Merge Sorted Array(合并有序数组)
- leetcode 88. Merge Sorted Array合并有序数组
- 88. Merge Sorted Array 合并有序数组
- 【数组&归并】Merge Sorted Array
- 高效合并两个有序数组(Merge Sorted Array)
- [leetcode]Merge Sorted Array (两个有序数组的合并 C语言实现)
- 88. Merge Sorted Array 合并两个数组
- hdu5795 博弈
- Qt应用远程连接SQL Server
- 数据结构 - 顺序表
- oracle-行转列点评oracle11g sql新功能pivot/unpivot
- 使用百度地图时一个小误区, "_OBJC_CLASS_$_BMKMapManager", referenced from:
- ※ Leetcode - Array - 88. Merge Sorted Array(快速归并两个有序数组)
- 如何理解C语言数组
- yii 语言的设置
- 软链接
- opencv 3.0 DPM cascade contrib模块
- HDU 5137 How Many Maos Does the Guanxi Worth(最短路--dijkstra)
- EF的DBFirst方式访问SQLite
- 二分
- hdu5792树状数组+容斥