LeetCode.88(合并两个有序数组) - 简单
LeetCode.88(合并两个有序数组) - 简单
-
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
-
说明:
- 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
- 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
-
示例:
输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6]
-
代码1:
//2020_06_29 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int p1(0), p2(0), i(0); vector<int> numst(nums1); for (i = 0; p1 < m && p2 < n; i++) { if (numst[p1] < nums2[p2]) { nums1[i] = numst[p1]; p1++; } else { nums1[i] = nums2[p2]; p2++; } } if (p1 == m) { for (int t = p2; t < n; t++, i++) { nums1[i] = nums2[t]; } } else { for (int t = p1; t < m; t++, i++) { nums1[i] = numst[t]; } } } };
-
代码2:
//2020_06_29 class Solution { public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int p = m + n - 1; while(n){ if(m == 0){ nums1[p--] = nums2[--n]; }else if(nums1[m-1] < nums2[n-1]){ nums1[p--] = nums2[--n]; }else{ nums1[p--] = nums1[--m]; } } } };