Leetcode(4)寻找两个有序数组的中位数

[题目表述]:

给定两个大小为 m 和 n 的有序数组 nums1 和* nums2*。

请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

你可以假设 nums1nums2 不会同时为空。

第一种方法:list拼接排列取中位数

执行用时:116 ms ; 内存消耗:11.8MB 效果:还行

class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
nums1.extend(nums2)
sort_nums1=sorted(nums1)
number=len(sort_nums1)
if number%2==1 :
average_nums=sort_nums1[number/2]
else: average_nums=float((sort_nums1[number/2]+sort_nums1[number/2-1]))/2
return average_nums

学习

  • 整数/2在leetcode上 取整有点迷

  • 分奇偶情况

第二种方法:归并排序

执行用时:124 ms; 内存消耗:11.8MB

class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
number=len(nums1)+len(nums2)
end=number/2+1
p1,p2=0,0
res=[]
while p1 < len(nums1) or p2 < len(nums2):
if p1 >= len(nums1):
res.append(nums2[p2])
p2 += 1
elif p2 >= len(nums2):
res.append(nums1[p1])
p1 += 1
else:
num1, num2 = nums1[p1], nums2[p2]
if num1 <= num2:
res.append(num1)
p1 += 1
else:
res.append(num2)
p2 += 1
if len(res) == end:
if number%2==1 :
mid=res[-1]
else:
mid=(res[-1]+res[-2])*1.0/2
return mid

学习

  • 对于已经排列好的数组,使用归并排序合并两个数组再找很好

最新文章

  1. cesium核心类Viewer简介
  2. js 函数返回函数
  3. hibernate开发(1)
  4. spring.net tx:advice 和 aop:config 配置事务 匹配名字的方法管理事务
  5. android-GridView控件的使用
  6. 开启Github之旅
  7. foreach 相关
  8. Knockoutjs官网翻译系列(一)
  9. WPF资源字典使用
  10. BZOJ 1497: [NOI2006]最大获利( 最大流 )
  11. RH033读书笔记(16)-Lab 17 Installation and Administration Tools
  12. 开源文档管理系统LogicalDOC测试报告---安装篇
  13. HTML中的Hack条件注释语句
  14. macbook 入门
  15. 创建、使用SpringBoot项目
  16. cp2102 驱动 win7x64 -2018
  17. _killerstreak
  18. java实时监听日志写入kafka(转)
  19. 免费桌面视频录像工具OBS的简单操作介绍
  20. Unity3D笔记 愤怒的小鸟&lt;二&gt; 实现Play界面

热门文章

  1. airflow的安装
  2. PacMan 01——玩家移动
  3. List之ConcurrentModificationException异常
  4. 【linux】【mysql】mysql主从数据库
  5. RxSwift 入门
  6. Scrapy项目 - 项目源码 - 实现腾讯网站社会招聘信息爬取的爬虫设计
  7. Spring MVC 梳理 - 四种HandlerMapping
  8. 夯实Java基础系列13:深入理解Java中的泛型
  9. JDK 1.8 之 Map.merge()
  10. Android的各大框架整理