4 Median of Two Sorted Arrays
来源:互联网 发布:自动交易软件diy 编辑:程序博客网 时间:2024/06/05 17:42
class Solution:
# @param {integer[]} nums1
# @param {integer[]} nums2
# @return {float}
def findMedianSortedArrays(self, num1, num2):
"""
"time complexity O(m+n)"
nums=nums1+nums2
nums.sort()
l=len(nums)
mid=(l-1)>>1
if l%==2:
return (nums[mid]+nums[mid+1])/2.0
else:
return nums[mid]
"""
"what if time complexity is required to be O(log(m+n))??"
#what about merge manner for getting the kth element from sorted arrays?
"""
create a pointer pointing to each array's head respectively, if num1's current element<num2's, pointer1++, m++, and vice versa, while if k is close to m+n, the time complexity would be O(m+n)
"""
#may binary thought help?
l=len(num1)+len(num2)
if l&1:
return self.findk(num1,num2,(l+1)/2)
else:
return (self.findk(num1,num2,l/2)+self.findk(num1,num2,l/2+1))/2.0
def findk(self, num1, num2, k):
l1,l2,ka,kb=len(num1),len(num2),min(k/2,len(num1)),k-min(k/2,len(num1))
if l1>l2: return self.findk(num2,num1,k)
if l1==0: return num2[k-1]
if k==1: return min(num1[0],num2[0])
if num1[ka-1]<num2[kb-1]:
return self.findk(num1[ka:],num2,k-ka)
elif num1[ka-1]>num2[kb-1]:
return self.findk(num1,num2[kb:],k-kb)
else:
return num1[ka-1]
# @param {integer[]} nums1
# @param {integer[]} nums2
# @return {float}
def findMedianSortedArrays(self, num1, num2):
"""
"time complexity O(m+n)"
nums=nums1+nums2
nums.sort()
l=len(nums)
mid=(l-1)>>1
if l%==2:
return (nums[mid]+nums[mid+1])/2.0
else:
return nums[mid]
"""
"what if time complexity is required to be O(log(m+n))??"
#what about merge manner for getting the kth element from sorted arrays?
"""
create a pointer pointing to each array's head respectively, if num1's current element<num2's, pointer1++, m++, and vice versa, while if k is close to m+n, the time complexity would be O(m+n)
"""
#may binary thought help?
l=len(num1)+len(num2)
if l&1:
return self.findk(num1,num2,(l+1)/2)
else:
return (self.findk(num1,num2,l/2)+self.findk(num1,num2,l/2+1))/2.0
def findk(self, num1, num2, k):
l1,l2,ka,kb=len(num1),len(num2),min(k/2,len(num1)),k-min(k/2,len(num1))
if l1>l2: return self.findk(num2,num1,k)
if l1==0: return num2[k-1]
if k==1: return min(num1[0],num2[0])
if num1[ka-1]<num2[kb-1]:
return self.findk(num1[ka:],num2,k-ka)
elif num1[ka-1]>num2[kb-1]:
return self.findk(num1,num2[kb:],k-kb)
else:
return num1[ka-1]
0 0
- Leetcode 4 Median of Two Sorted Arrays
- LeetCode 4 - Median of Two Sorted Arrays
- Leetcode 4 Median of Two Sorted Arrays
- Leetcode 4 Median of Two Sorted Arrays
- [leetcode 4] Median of Two Sorted Arrays
- LeetCode 4:《Median of Two Sorted Arrays》
- [Leetcode] 4 - Median of Two Sorted Arrays
- 4、Median of Two Sorted Arrays
- leetcode|4|Median of Two Sorted Arrays
- 4,Median of Two Sorted Arrays
- [Leetcode]4Median of Two Sorted Arrays
- leetcode 4 Median of Two Sorted Arrays
- 4 Median of Two Sorted Arrays
- LeetCode #4 Median of Two Sorted Arrays
- LeetCode-4-Median of Two Sorted Arrays
- LeetCode 4 Median of Two Sorted Arrays
- leetcode 4 Median of Two Sorted Arrays
- 4 Median of Two Sorted Arrays
- Mongodb内嵌文档的查询
- Android学习 10-> 单帧布局
- Facebook推出强大Android图片库Fresco
- C# 中的委托和事件
- Android Activity life Cycle
- 4 Median of Two Sorted Arrays
- Akka学习笔记-简介与API简单操作
- 安卓打造listview的万用adapter
- 大文件,5亿整数,怎么排?
- .NET设计模式系列文章
- 成龙范冰冰合作电影 把李晨当姚晨
- hdu_2177----威佐夫博弈
- [C++]string类的查找函数
- 三、jQuery中的DOM操作