zoukankan      html  css  js  c++  java
  • Leecode刷题之旅-C语言/python-88合并两个有序数组

    /*
     * @lc app=leetcode.cn id=88 lang=c
     *
     * [88] 合并两个有序数组
     *
     * https://leetcode-cn.com/problems/merge-sorted-array/description/
     *
     * algorithms
     * Easy (43.05%)
     * Total Accepted:    31.4K
     * Total Submissions: 73K
     * Testcase Example:  '[1,2,3,0,0,0]
    3
    [2,5,6]
    3'
     *
     * 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
     * 
     * 说明:
     * 
     * 
     * 初始化 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]
     * 
     */
    void merge(int* nums1, int m, int* nums2, int n) {
        int i =m-1;
        int j =n-1;
        int k = m+n-1;
        while(i>=0&&j>=0){
            if(nums1[i]>=nums2[j]){
                nums1[k--] = nums1[i];
                i--;
            }
            else
            {
                nums1[k--]=nums2[j];
                j--;
            }
        }
        while(j>=0){
            nums1[k--]=nums2[j];
            j--;
        }
        return nums1;
    }

    思路是,设立两个下标,都从逆序开始。因为是有序的数组,所以从最后开始,把更大的值传到nums1中。

    经过比较后,如果nums2还有值的话,就把nums2剩下的值传进nums1中即可。

    -----------------------------------------------------------------------------------------------------------------------------------------

    python:

    #
    # @lc app=leetcode.cn id=88 lang=python3
    #
    # [88] 合并两个有序数组
    #
    # https://leetcode-cn.com/problems/merge-sorted-array/description/
    #
    # algorithms
    # Easy (43.05%)
    # Total Accepted:    31.4K
    # Total Submissions: 73K
    # Testcase Example:  '[1,2,3,0,0,0]
    3
    [2,5,6]
    3'
    #
    # 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。
    # 
    # 说明:
    # 
    # 
    # 初始化 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]
    # 
    #
    class Solution:
        def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
            """
            Do not return anything, modify nums1 in-place instead.
            """
            nums1[m:m+n] = nums2[:n]
            nums1.sort()

    python就简单很多,直接合并数组,然后排序。。。=。=

  • 相关阅读:
    CSS快速入门
    Kafka (一) 核心概念
    软件工程模型
    函数式编程
    spark计算操作整理
    HBase 文件合并
    HBase 数据存储结构
    目的论浅谈
    PHP8的注解
    JS的移入移除
  • 原文地址:https://www.cnblogs.com/lixiaoyao123/p/10518096.html
Copyright © 2011-2022 走看看