C/C++教程

【刷】leetcode之合并两个有序数组

本文主要是介绍【刷】leetcode之合并两个有序数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

作者:Geekwyz

合并两个有序数组

题目链接:
https://leetcode-cn.com/problems/merge-sorted-array/

  • 解题思路

双指针的解法
1.定义两个指针,第一个指针指向第一个数组的最后一位
2.第二个指针也指向第二个数组的最后一位
3.将两个指针进行比较,如果第一个指针指向的元素比第二个指针指向的元素大,
3.覆盖:就将元素存入第一个数组中,将第二个数组剩余元素存入第一个数组中

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int pos = m-- + n-- - 1;
        while (n >= 0 && m >= 0) {
            nums1[pos--] = nums1[m] > nums2[n] ? nums1[m--] : nums2[n--];
        }
        while (n >= 0) {
            nums1[pos--] = nums2[n--];
        }
    }
};
这篇关于【刷】leetcode之合并两个有序数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!