博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python3实现合并两个有序数组
阅读量:4577 次
发布时间:2019-06-08

本文共 1291 字,大约阅读时间需要 4 分钟。

  很早就听同学和师兄经常说刷题很重要,然而编程能力一直都很渣的我最近才开始从leetcode的初级算法开始。今天遇到的这道题虽然很简单,因为是头一次用自己的方法速度还不错,特此记录一下,还大神们请不要嘲笑菜鸡。

88/809 合并两个有序数组
 

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 使得 num1 成为一个有序数组。

说明:

  • 初始化 nums1 和 nums2 的元素数量分别为 m 和 n
  • 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。

示例:

输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6],       n = 3输出: [1,2,2,3,5,6] 我采用的方法:
class Solution:    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.        """        del(nums1[m:])        del(nums2[n:])        nums1.extend(nums2)        nums1.sort(reverse=False)

思路很简单,就是删除nums1中第m个(从1开始)元素后面的元素,删除nums2后面第n个元素后面的元素,再用num2列表扩展nums1列表,最后再对所有元素进行升序排序。

用时最短的方法:

class Solution:    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.        """        for num in nums2:            nums1[m] = num            m += 1        nums1.sort()

他的思路是把nums2的元素放到nums1第m个(从0开始)数的后面。好奇他为什么没有用到n这个值,感觉好像错了,用官网测试了他的算法竟然结果也是对的,太奇怪了。

 

转载于:https://www.cnblogs.com/tay007/p/10328115.html

你可能感兴趣的文章
Adobe Dreamweaver CS5.5 中文版 下载 注册码
查看>>
C#中的静态常量(const)和动态常量(static和readonly)用法和区别
查看>>
xshell连接virtualbox下的linux系统
查看>>
【EF】EF扩展库(批量操作)
查看>>
向后兼容,向前兼容
查看>>
C++ activemq CMS 学习笔记
查看>>
Linux tcpdump命令详解
查看>>
移动端标签
查看>>
移动端开发的一些技巧总结(1)
查看>>
dubbo 面试题
查看>>
android应用proguard混淆打包
查看>>
Laravel Create Facade
查看>>
【iOS系列】-UIButton的非常规使用
查看>>
理解PHP面向对象三大特性
查看>>
json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸
查看>>
TPS和QPS的区别
查看>>
day 016 面向对象---类与类的关系
查看>>
Java处理乱码问题
查看>>
冒泡排序
查看>>
常用NFS mount选项介绍
查看>>