leetcode 88: Merge Sorted Array
来源:互联网 发布:东莞网络问政平台 编辑:程序博客网 时间:2024/05/23 16:38
问题描述:
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
思路:
首先很容易想到传统做法,直接增加一个临时存储的辅助数组,从而可以顺利地归并。
然后进阶一下,假设要求没有辅助空间,那么也还是很从容,将数组nums1的有效数字往后移n,例子[1,2,4,0,0,0,0] 3
迁移成[1,2,4,0,1,2,4]
。
假设nums2全部比nums1小,那么归并的数字只会填满前面的空格,而不会“污染”到后面的位置。可以联想普通情况,位置只会往后宽松,肯定不会污染。
但是有需要注意的地方是,将nums1的有效数字往后移,得先将尾部数字复制后移n位,再往前依次复制;如果从头部开始后移,遇到
[1,2,4,5,6,0]5[3]1
这类案例就会在移数字时污染了自己,产生错误结果。[1,1,1,1,1,1]
代码:
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { //move the valid value from front to n-tail, it must replacement from the end to begin. for (int i = m - 1; i >= 0; i--) { nums1[n + i] = nums1[i]; } //comparison from the respective head int nums1now = n, nums2now = 0; int i; for (i = 0; i < m + n; i++) { if ((nums1now == (n + m)) || (nums2now == n)) break; if (nums1[nums1now] <= nums2[nums2now]) { nums1[i] = nums1[nums1now]; nums1now++; } else { nums1[i] = nums2[nums2now]; nums2now++; } } if (nums1now == n + m) { for (; nums2now < n; nums2now++) { nums1[i] = nums2[nums2now]; i++; } } else { for (; nums1now < m + n; nums1now++) { nums1[i] = nums1[nums1now]; i++; } } }};
0 0
- LeetCode(88) Merge Sorted Array
- [leetcode 88] Merge Sorted Array
- LeetCode[88]Merge Sorted Array
- leetcode-88 Merge Sorted Array
- leetcode || 88、Merge Sorted Array
- LeetCode---(88)Merge Sorted Array
- Leetcode[88]-Merge Sorted Array
- leetcode 88 Merge Sorted Array
- leetcode[88]:Merge Sorted Array
- Leetcode #88 Merge Sorted Array
- leetcode 88: Merge Sorted Array
- leetcode: (88) Merge Sorted Array
- [Leetcode]#88 Merge Sorted Array
- 【LeetCode 88 】 Merge Sorted Array
- [leetcode 88]Merge Sorted Array
- leetcode 88:Merge Sorted Array
- 【LeetCode】88 Merge Sorted Array
- LeetCode 88:Merge Sorted Array
- leetcode:Combination Sum II
- 加速R运行的简易方法-数据结构和*pply簇
- OSX: Preparing Making Clean OSX Core
- 3D打印机耗材ABS和PLA的区别
- Ultimaker 两款新3D打印机抢鲜评测
- leetcode 88: Merge Sorted Array
- FiddlerScript学习一:修改Request或Response
- how to build a cgal program in qt under ubuntu
- 模板类的继承
- 1076. Forwards on Weibo (30)
- 1077. Kuchiguse (20)
- Flip Game POJ1753
- 1078. Hashing (25)
- 什么是概念学习?