【LeetCode】88. Merge Sorted Array 解题报告(Java & Python)
作者: 负雪明烛
 id: fuxuemingzhu
 个人博客: http://fuxuemingzhu.cn/
题目地址:https://leetcode.com/problems/merge-sorted-array/description/
题目描述
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
- The number of elements initialized in nums1 and nums2 are m and n respectively.
- You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.
Example:
Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3
Output: [1,2,2,3,5,6]
题目大意
把两个有序的数组合并,把结果放到nums1中去。
解题方法
这个题的核心是注意到两个数组是已经有序的!这样就可以很简单的解决。
方法是在每个数组的最后一个指定位置判断大小,根据判定的大小放到nums1的最后位置里,然后移动指针,继续判断,直到一个数组先遍历结束。
注意,如果nums1已经遍历结束了,就要把nums2剩下的元素放到nums1的前面。最后可以确保有序。
另外,我以后可能就使用python刷题了,虽然语言大同小异,最主要的还是锻炼自己的语言基础。这个题中函数不用返回。
class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        while m > 0 and n > 0:
            if nums1[m - 1] > nums2[n -1]:
                nums1[m + n - 1] = nums1[m - 1]
                m -= 1
            else:
                nums1[m + n - 1] = nums2[n - 1]
                n -= 1
        nums1[:n] = nums2[:n]
二刷的版本:
class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        i, j = m - 1, n - 1
        k = m + n - 1
        while i >= 0 and j >= 0:
            if nums1[i] > nums2[j]:
                nums1[k] = nums1[i]
                i -= 1
            else:
                nums1[k] = nums2[j]
                j -= 1
            k -= 1
        while j >= 0:
            nums1[k] = nums2[j]
            j -= 1
            k -= 1
新建数组
新建一个数组,保存结果,然后把排序了的结果放入到nums1中就好了。
class Solution(object):
    def merge(self, nums1, m, nums2, n):
        """
        :type nums1: List[int]
        :type m: int
        :type nums2: List[int]
        :type n: int
        :rtype: void Do not return anything, modify nums1 in-place instead.
        """
        nums = [n1 for i, n1 in enumerate(nums1) if i < m] + [n2 for i, n2 in enumerate(nums2) if i < n]
        nums.sort()
        for i, num in enumerate(nums):
            nums1[i] = num
日期
2017 年 8 月 21 日
 2018 年 11 月 24 日 —— 周六快乐
【LeetCode】88. Merge Sorted Array 解题报告(Java & Python)的更多相关文章
- 【LeetCode】153. Find Minimum in Rotated Sorted Array 解题报告(Python)
		[LeetCode]153. Find Minimum in Rotated Sorted Array 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode. ... 
- Leetcode#88. Merge Sorted Array(合并两个有序数组)
		题目描述 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: 初始化 nums1 和 nums2 的元素数量分别为 m ... 
- [LeetCode] 88. Merge Sorted Array 混合插入有序数组
		Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ... 
- leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法
		Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: Y ... 
- LeetCode 88. Merge Sorted Array(合并有序数组)
		Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ... 
- [LeetCode] 88. Merge Sorted Array 合并有序数组
		Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ... 
- 【LeetCode】540. Single Element in a Sorted Array 解题报告(Python & C++)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:异或 方法二:判断相邻元素是否相等 方法三:二分查找 ... 
- LeetCode 88 Merge Sorted Array
		Problem: Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array ... 
- Leetcode 88. Merge Sorted Array(easy)
		Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ... 
随机推荐
- Pycharm的简单配置和使用
			外观 Ctrl+滚轮改变字体大小:file -> Setting ->Editor-〉General -> Mouse: 字体.颜色:file->settings->Ed ... 
- 数据库命令补全工具mycli
			一.安装 我的数据库安装的是win版本,安装python后,直接命令行: 1 pip install mycli 即可. 二.使用 进入命令行后输入: 1 mycli -u root -p 88888 ... 
- Oracle-where exists()、not exists() 、in()、not in()用法以及效率差异
			0.exists() 用法: select * from T1 where exists(select 1 from T2 where T1.a=T2.a) 其中 "select 1 fro ... 
- lua5.4 beta中的to-be-closed变量的用法
			对应目前最新lua5.4 beta版本:2019-10-09发布 这个功能之前修改过两次语法,当前的语法不出意外将会是最终决定了,目前还没有最新的中文资料,所以我来这里发一下. 先介绍下这个功能: 被 ... 
- 年底巩固下 CS 知识「GitHub 热点速览 v.21.49」
			作者:HelloGitHub-小鱼干 期末到了!是时候来一波 CS 复习资料了,从本科基础知识开始到实用编程技术.本周 GitHub 热点趋势榜给你提供了最全的复习资料:清华的 CS 四年学习资料.W ... 
- MPI 学习笔记
			目录 MPI学习笔记 MPI准备 概述 前置知识补充 环境部署 1.修改IP及主机名 2.关闭防火墙 3.实现免密码SSH登录 4.配置MPI运行环境 5.测试 程序的执行 编译语句 运行语句 MPI ... 
- 【JAVA】【Basic】MacOS上搭建JAVA开发环境
			1. JRE 1.1. 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 1.1.1. dmg格式安装: ... 
- go 代理
			环境变量中设置 #GO111MODULE=auto GOPROXY=https://goproxy.io 如果不第一次,则在命令行设置 go env -w GO111MODULE=on go env ... 
- Linux:-e、-d、-f、-L、-r、-w、-x、-s、-h、
			-e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L fil ... 
- 聊聊 SpringBoot 中的两种占位符:@*@ 和 ${*}
			前言 在 SpringBoot 项目中,我们经常会使用两种占位符(有时候还会混用),它们分别是: @*@ ${*} 如果我们上网搜索「SpringBoot 的占位符 @」,大部分答案会告诉你,Spri ... 
