博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 4. Median of Two Sorted Arrays
阅读量:6589 次
发布时间:2019-06-24

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

思路:

这道题要求的时间复杂度是O(log(m+n)), 所以想到的肯定是二分法。但是这道题因为有两个array没有办法直接二分。首先,先判断是基数还是偶数,来确定需要查找第K个数。在查找第K个数的时候,主要思路是各分配k/2个数给两个数组, 看每个数组k/2之前的那个数,小的那个可以确定第K个数不在这个里面,下次继续查找的时候去掉这个部分,并且查找第k - k/2个数。 在具体的查找中,会出现几种情况,第一种是一个其中一个array已经为空,这种情况最简单,说明需要找到的第K个数肯定在另外一个数列里,return出来即可。第二种情况是需要查找第一个数,这种情况只要比较两个数列第一个数中较小的那一个。第三种就是普遍情况的时候,即比较两个数组的K/2-1个数。需要注意的是要处理其中一个数组的长度已经小于K/2了的情况。

 

class Solution:    def findMedianSortedArrays(self, nums1, nums2):        """        :type nums1: List[int]        :type nums2: List[int]        :rtype: float        """        n = len(nums1) + len(nums2)        if n % 2 == 1:            return self.findKth(nums1, nums2, n//2 + 1)        else:            smaller = self.findKth(nums1, nums2, n//2)            bigger = self.findKth(nums1, nums2, n//2 + 1)            return (smaller + bigger) / 2.0            def findKth(self, nums1, nums2, k):            if len(nums1) == 0:                return nums2[k - 1]            if len(nums2) == 0:                return nums1[k - 1]             if k == 1:                return min(nums1[0], nums2[0])                         e1 = nums1[k//2 - 1] if len(nums1) >= k//2 else None            e2 = nums2[k//2 - 1] if len(nums2) >= k//2 else None                        if e2 is None or (e1 is not None and e1 < e2):                return self.findKth(nums1[k//2:], nums2, k - k//2)            return self.findKth(nums1, nums2[k//2:], k - k//2)

 

转载于:https://www.cnblogs.com/codingEskimo/p/9638492.html

你可能感兴趣的文章
高性能web建站规则(将js放在页面底部)
查看>>
Java EnumMap工作原理及实现
查看>>
阐述Spring框架中Bean的生命周期?
查看>>
虚拟内存管理
查看>>
注水、占坑、瞎掰:起底机器学习学术圈的那些“伪科学”
查看>>
大数据小视角1:从行存储到RCFile
查看>>
JavaScript常用设计模式
查看>>
第18天:京东网页头部制作
查看>>
好消息:Dubbo & Spring Boot要来了
查看>>
面向对象封装的web服务器
查看>>
南开大学提出新物体分割评价指标,相比经典指标错误率降低 69.23%
查看>>
初创公司MindMaze研发情绪反应VR,让VR关怀你的喜怒哀乐
查看>>
绕开“陷阱“,阿里专家带你深入理解C++对象模型的特殊之处
查看>>
ElasticSearch
查看>>
9-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,C#TCP客户端发信息给单片机控制小灯的亮灭)...
查看>>
物联网安全形势严峻——除严加管控外别无选择
查看>>
香港设计师带来仿生机器人,其身体 70% 构造均由3D打印完成
查看>>
bootstrap16-上下文表格布局
查看>>
不规则物体形状匹配综述
查看>>
自动化设计-框架介绍 TestCase
查看>>