博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
寻找两个正序数组的中位数(Python,LeetCode)
阅读量:4189 次
发布时间:2019-05-26

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

目录


 

题目描述

给定两个大小为m和n的正序(从小到大)数组nums1和nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度 O(log(m+n)) 。你可以假设nums1和nums2不会同时为空。

输入/输出描述

给定数组1 [1, 2]
给定数组2 [3, 4]
输出 2.5
解释 因为两个数组合并后按从小到大排序后的结果是[1, 2, 3, 4],则其中位数为 (2 + 3)/ 2 = 2.5

 

解决方案

将两个数组合并后按照从小到大的序列排序,按照中位数的计算规则求出中位数的值。

中位数计算规则:

1、如果数列长度是奇数,则中位数对应的下标为 (length / 2) + 1

2、如果数列长度是偶数,则中位数对应下标为 length / 2的数字和 (length / 2) + 1 两数的平均值。

 

代码

class Solution:    def findMedianSortedArrays(self, nums1: list, nums2: list) -> float:        nums1.extend(nums2)        nums1.sort()        length = len(nums1)        if length % 2 == 0:            return (nums1[int(length/2 - 1)] + nums1[int(length/2)]) / 2.0        else:            return nums1[int((length+1)/2 - 1)]

 

代码走读

# LeetCode定义解决方案类class Solution:    def findMedianSortedArrays(self, nums1: list, nums2: list) -> float:        # 将两个列表合并后按照从大到小的顺序排序        nums1.extend(nums2)        nums1.sort()        # 判断合并后列表的长度是奇数还是偶数,然后根据中位数计算规则计算出中位数        length = len(nums1)        if length % 2 == 0:            return (nums1[int(length/2 - 1)] + nums1[int(length/2)]) / 2.0        else:            return nums1[int((length+1)/2 - 1)]# 自测用例if __name__ == '__main__':    s = Solution()    result = s.findMedianSortedArrays([1, 2], [3])    print(result)

 

传送门

转载地址:http://odsoi.baihongyu.com/

你可能感兴趣的文章
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>
高扩展性网站的50条原则(转)-思维导图
查看>>
解决openstack novnc一段时间后自动挂断登录不上问题,novncproxy dead but pid file exists
查看>>
构建OpenStack的云基础架构:ManageIQ(转)
查看>>
云管理软件 ManageIQ(转)
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
DISCUZ浅析之COOKIE篇
查看>>
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
查看>>
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>
PAAS平台对比:OpenShift VS CloudFoundry【51CTO调研报告】
查看>>
JAX-RS(java restful实现讲解)(转)
查看>>
Spring MVC与JAX-RS比较与分析
查看>>
openstack官方docker介绍
查看>>
头痛与早餐
查看>>