5 leetcode - Median of Two Sorted Arrays
来源:互联网 发布:php ajax上传 编辑:程序博客网 时间:2024/06/04 20: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 (m+n))
举例:
nums1 = [1, 3] nums2 = [2] The median is 2.0
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
直接合并两个数组,直至合并至中位数
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ len1,len2 = len(nums1),len(nums2) if len1 == 0 and len2 == 0: return 0 median = int((len1 + len2)/2) #排序到中间位即可 target = [] index1 = index2 = 0 #如果偶数 while (index1 + index2) <= median and index1 < len1 and index2 <len2: if nums1[index1] < nums2[index2]: target.append(nums1[index1]) index1 += 1 else: target.append(nums2[index2]) index2 += 1 #未取到中间位的数,便有一个list空了,list衔接 if (index1 + index2) <= median: if index1 < len1: target.extend(nums1[index1:]) if index2 < len2: target.extend(nums2[index2:]) return target[median] if (len1 + len2)%2 else float(target[median] + target[median - 1])/2
二分查找两个数组的第k个数
详细解释见http://blog.csdn.net/lis_12/article/details/53128594
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ len1,len2 = len(nums1),len(nums2) if (len1 + len2) & 1: #奇数个 return self.fun(nums1,nums2,(len1 + len2)/2 + 1) else:#偶数个 return float(self.fun(nums1,nums2,(len1 + len2)/2 + 1) + self.fun(nums1,nums2,(len1 + len2)/2))/2 def fun(self,nums1,nums2,k): #如果一个list为空,肯定返回另外一个的第k个元素 if len(nums2) == 0: return nums1[k - 1] #保证nums1长度大于nums2 if len(nums2) > len(nums1): return self.fun(nums2,nums1,k) #取第一个元素,肯定是要比两个list的首个元素 if k == 1: return min(nums1[0],nums2[0]) q = min(k / 2, len(nums2))#这里很容易,出错,防止越界..... p = k - q if nums1[p - 1] < nums2[q - 1]: return self.fun(nums1[p:],nums2,k - p) elif nums1[p - 1] > nums2[q - 1]: return self.fun(nums1,nums2[q:],k - q) else: return nums1[p - 1]
0 0
- 5 leetcode - Median of Two Sorted Arrays
- LeetCode: Median of Two Sorted Arrays
- LeetCode Median of Two Sorted Arrays
- leetcode 26: Median of Two Sorted Arrays
- Leetcode 4 Median of Two Sorted Arrays
- [Leetcode] Median of Two Sorted Arrays
- LeetCode 4 - Median of Two Sorted Arrays
- [LeetCode]Median of Two Sorted Arrays
- leetcode Median of Two Sorted Arrays
- LeetCode-Median of Two Sorted Arrays
- [LeetCode] Median of Two Sorted Arrays
- [LeetCode] Median of Two Sorted Arrays
- [leetcode] Median of Two Sorted Arrays
- leetcode-004:Median of Two Sorted Arrays
- Leetcode 4 Median of Two Sorted Arrays
- leetcode之 median of two sorted arrays
- 【转载】【leetcode】Median of Two Sorted Arrays
- LeetCode - Median of Two Sorted Arrays
- 【模板】网络流——Dinic
- servlet容器,web服务器的区别与联系
- Java编程:垃圾收集算法
- 初识自定义view<一>
- 【模板】匈牙利算法——二分图最大匹配
- 5 leetcode - Median of Two Sorted Arrays
- Could not create the view: An unexpected exception was thrown.
- discuz主题列表页伪静态化设置方法(lnmp+wamp+lamp通用)
- 完美解决thinkphp验证码出错无法显示的方法
- mark-----调屏大师介绍
- 产品经理新手如何写体验报告?
- 配置ubuntu虚拟机上的caffe和Theano
- 使用树莓派控制4路继电器
- CALayer实现,界限、透明度、位置、旋转、缩放组合动画