算法分析课每周练习 Median of Two Sorted Arrays
来源:互联网 发布:典型hadoop云计算 编辑:程序博客网 时间:2024/06/05 06:05
题目
Median of two sorted arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
分析
这种比较搜索类问题,由于搜索树的深度为O(log(N))次,所以算法复杂度最好也是O(log(m+n)),关键在于对搜索树剪枝,快速排除不用比较的部分
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ len1 = len(nums1) len2 = len(nums2) if (len1 + len2) % 2 == 1: return self.getKth(nums1, nums2, (len1 + len2)/2 + 1) else: return (self.getKth(nums1, nums2, (len1 + len2)/2) + self.getKth(nums1, nums2, (len1 + len2)/2 + 1)) * 0.5 def getKth(self, nums1, nums2, k): len1 = len(nums1) len2 = len(nums2) if len1 > len2: return self.getKth(nums2, nums1, k) if len1 == 0: return nums2[k - 1] if k == 1: return min(nums1[0], nums2[0]) halfOfK = min(k/2, len1) leftOfK = k - halfOfK if nums1[halfOfK - 1] <= nums2[leftOfK - 1]: return self.getKth(nums1[halfOfK:], nums2, leftOfK) else: return self.getKth(nums1, nums2[leftOfK:], halfOfK)
解析
每次比较把不在后k的部分剪掉不比较,再把剪掉的个数从搜索的位次减去,搜索
阅读全文
0 0
- 算法分析课每周练习 Median of Two Sorted Arrays
- 算法练习(3):Median of Two Sorted Arrays
- (算法分析Week4)Median of Two Sorted Arrays[Hard]
- 算法课第十五周作业 | Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of two sorted arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- median-of-two-sorted-arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- linux vnc 的使用
- servlet3.0下构建spring web项目
- Java多线程并发编程 — 读写锁 Reentrant Read Write Lock
- Scrapy安装步骤(第一篇MarkDown博客)
- 跨域请求方式集锦--CORS跨域请求支持各种请求方式
- 算法分析课每周练习 Median of Two Sorted Arrays
- 多文件目录下makefile文件递归执行编译所有c文件
- bit位域大小端转换问题,位域是一个整体转换?
- Opencv实现粒子滤波算法
- 【Linux】 nc (netcat) 详解
- The APK file xxx.apk does not exist on disk. Error while Installing APK
- poj 2752
- Android学习路线总结,绝对干货
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。