zoukankan      html  css  js  c++  java
  • LeetCode:合并两个有序数组

    给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。

    初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。

    示例 1:

    输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
    输出:[1,2,2,3,5,6]
    示例 2:

    输入:nums1 = [1], m = 1, nums2 = [], n = 0
    输出:[1]

    我的代码

    void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
    
        int j = 0, m1 = m, m2 = m+n;
        if (n == 0)
        {
            return;
        }
        if (m == 0)
        {
            for (size_t i = 0; i < n; i++)
            {
                nums1[i] = nums2[i];
            }
            return;
        }
        for (size_t i = 0; i < m2; i++)
        {
            if (j == n)
            {
                break;
            }
            if ((m - 1) < i)
            {
                nums1[i] = nums2[j];
                j++;
                if (j == n)
                {
                    break;
                }
                continue;
            }
            if (nums1[i] >= nums2[j])
            {
                while (i < m)
                {
                    nums1[m] = nums1[m - 1];
                    m--;
                }
                nums1[i] = nums2[j];
                m1++;
                m = m1;
                j++;
            }
    
        }
    
    
    }

    官方

    void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
        int p1 = m - 1, p2 = n - 1;
        int tail = m + n - 1;
        int cur;
        while (p1 >= 0 || p2 >= 0) {
            if (p1 == -1) {
                cur = nums2[p2--];
            } else if (p2 == -1) {
                cur = nums1[p1--];
            } else if (nums1[p1] > nums2[p2]) {
                cur = nums1[p1--];
            } else {
                cur = nums2[p2--];
            }
            nums1[tail--] = cur;
        }
    }
    从此山高路远,纵马扬鞭。愿往后旅途,三冬暖,春不寒,天黑有灯,下雨有伞。此生尽兴,不负勇往。
  • 相关阅读:
    生成微博授权URL及回调地址
    微博三方登录
    celery异步发送短信
    celery配置
    celery原理与组件
    Django----短信验证接口
    Django----图片验证码接口
    编写注册接口
    jwt安装配置
    day19-Exception
  • 原文地址:https://www.cnblogs.com/feizianquan/p/14680513.html
Copyright © 2011-2022 走看看