合并两个有序数组
Posted 氵冫丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个有序数组相关的知识,希望对你有一定的参考价值。
文章目录
1.题目
2. 发现规律
- 两个数组都是有序的,希望合并成一个还是有序的,每次选取比较小的放在新的数组里面就好了;
- 但是题目要求放在 nums1的数组里面,nums1的大小大于等于 m + n ,所以可以反过来
- 每次选取最大的放在 nums1的 m + n -1 的位置
class Solution
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
int k = m + n - 1, i = m - 1, j = n - 1;
int max = -1;
while (k >= 0)
if (i >= 0 && j >= 0)
if (nums1[i] >= nums2[j])
nums1[k] = nums1[i];
--i;
else
nums1[k] = nums2[j];
--j;
else if (j >= 0)
nums1[k] = nums2[j];
--j;
else if (i >= 0)
nums1[k] = nums1[i];
--i;
--k;
;
以上是关于合并两个有序数组的主要内容,如果未能解决你的问题,请参考以下文章