首页 > 编程语言 > 详细

Leecode刷题之旅-C语言/python-88合并两个有序数组

时间:2019-03-12 17:54:00      阅读:253      评论:0      收藏:0      [点我收藏+]
/*
 * @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]\n3\n[2,5,6]\n3‘
 *
 * 给定两个有序整数数组 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]\n3\n[2,5,6]\n3‘
#
# 给定两个有序整数数组 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就简单很多,直接合并数组,然后排序。。。=。=

Leecode刷题之旅-C语言/python-88合并两个有序数组

原文:https://www.cnblogs.com/lixiaoyao123/p/10518096.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!