leetcode #4: Median of Two Sorted Arrays
来源:互联网 发布:去人声软件 编辑:程序博客网 时间:2024/06/05 05:52
题目链接: Median of Two Sorted Arrays
这道题坑还是有点多的,刚看到的时候第一反应是:这不就是归并排序....还是图样啊。所以先这样提交了:
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ idx1 = 0 idx2 = 0 a = 0 b = 0 while idx1 + idx2 != (len(nums1) + len(nums2))//2 + 1: print(idx1, idx2) if idx1 == len(nums1) and idx2 < len(nums2): a = b b = nums2[idx2] idx2+=1 elif idx2 == len(nums2) and idx1 < len(nums1): a = b b = nums1[idx1] idx1+=1 elif idx1 == len(nums1) and idx2 == len(nums2): break else: if nums1[idx1] <= nums2[idx2]: a = b b = nums1[idx1] idx1+=1 else: a = b b = nums2[idx2] idx2+=1 print '-------' print a, b if (len(nums1) + len(nums2)) % 2 == 0: return (float)(a + b)/2 else: return b
其实暴力算法也不是很好写的,会有很多坑爹的边界问题。
黑人文号.jpg
看了下别人的做法才恍然大悟..其实可以转换为找第k大的数,可以将时间复杂度从O(n)降到O(lgn):
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ n = len(nums1) + len(nums2) if n % 2: return self.find_kth(nums1, nums2, n//2 + 1) else: return float(self.find_kth(nums1, nums2, n//2) + self.find_kth(nums1, nums2, n//2 + 1)) / 2 def find_kth(self, nums1, nums2, k): #print nums1, nums2, k len1 = len(nums1) len2 = len(nums2) if len1 == 0: return nums2[k - 1] if len2 == 0: return nums1[k - 1] if k == 1: return min(nums1[0], nums2[0]) idx = k//2 if idx > min(len1, len2): idx = min(len1, len2) #print idx if nums1[idx - 1] <= nums2[idx - 1]: return self.find_kth(nums1[idx:], nums2, k - idx) else: return self.find_kth(nums1, nums2[idx:], k - idx)
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
- leetcode|4|Median of Two Sorted Arrays
- [Leetcode]4Median 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
- Leetcode[4] Median of Two Sorted Arrays
- LeetCode 4 - Median of Two Sorted Arrays
- leetcode 4 -- Median of Two Sorted Arrays
- CodeForce 628D Magic Numbers( 数位DP )
- AVPlayer自定制视频播放器(1)——视频播放器基本实现
- Sql中Insert添加语句如何不重复
- Cf Edu 15 C 城市与信号塔[二分]
- 洛谷 P2530 [SHOI2001]化工厂装箱员
- leetcode #4: Median of Two Sorted Arrays
- Struts2学习之旅(2)
- Java容器五:Vector
- iOS简单使用description方法(参考大神博客+自己想法)
- C++之引用
- 淘宝API示例
- [基础算法]递归二分算法
- EditText焦点问题 Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
- 整数的各位数之和与指数的递归求法