【Leetcode】88、合并两个有序数组 Easy

 

 这是一道非常简单的题, 开辟一个数组用双指针或者把两个并在一起用快排都可以很容易解决

时隔一年, 再次看到这题, 我想再原地用双指针解决

一开始的思路是使用双指针,初始时分别指向两个数组的首个元素, 之后如果第二个指针的数字更小, 则交换两个指针指向的元素,再将指针滑动。

动手时发现这种方法不易实现。

换了一个思路, 两个指针从数组末尾往前滑动, 非常漂亮的解决了这题。

复制代码
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int p1 = m - 1, p2 = n - 1;
        for (int p = nums1.size() - 1; p >= 0; --p)
        {
            if (p1 < 0) { nums1[p] = nums2[p2--];   continue; }
            if (p2 < 0) { nums1[p] = nums1[p1--];   continue; }
            if (nums1[p1] <= nums2[p2]) { nums1[p] = nums2[p2]; --p2; }
            else                        { nums1[p] = nums1[p1]; --p1; }
        }
    }
};
复制代码

 

posted @   鱼儿冒个泡  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示