给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。

请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。

1.我的思路:直接用sort,时间复杂度应如图所示

 class Solution:
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
nums = nums1+nums2
nums.sort()
n = len(nums)
if n % 2 == 0:
ans=(nums[int(n/2)]+nums[int((n/2)-1)])/2
else:
ans=nums[int(n/2)]
return ans
solution=Solution()
solution.findMedianSortedArrays([1,3],[2])

2.网上的思路:

时间复杂度和空间复杂度都是O(m + n),由于两个数组都是有序的,要找到中位数最好的方法就是将两个有序数组进行合并,创建一个大小为m+n的数组arr, 由后向前遍历,比较两个数组末尾元素的大小,将大的那个数存放到arr数组的尾部,然后大数数组的尾部下标向前移动,arr尾部下标也向前移动。直到某一个数组已经全部放进arr中,将剩下的那个数组全部拷贝进去,最后判断如果是奇数,则返回中间位的那个数,如果是偶数,返回中间两个数的平均数。

最新文章

  1. Idea的live template参数中的预定义功能
  2. 【Cocos2d-x】VS2012开发2dx无法解析的外部符号解决记录(第一篇)【转】
  3. Java for LeetCode 053 Maximum Subarray
  4. 【服务器环境搭建-Centos】jdk的安装
  5. 秒味课堂Angular js笔记------Angular js中的工具方法
  6. android LayoutInflater的使用
  7. Ubuntu基本设置
  8. oracle存储过程、声明变量、for循环(转)
  9. 随机矩阵(stochastic matrix)
  10. 201521123025《java程序设计》第8周学习总结
  11. linux统配符
  12. Java作业:第二次过程性考核 ——长春职业技术学院 16级网络工程
  13. BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)
  14. windows下mysql和linux下mysql主从配置
  15. [转]PowerDesigner表结构和字段大小写转换
  16. 单机部署PXC
  17. hasOwnProperty()方法与in操作符
  18. delphi winio 输入
  19. Apache Tomcat 服务因 0 (0x0) 服务性错误而停止
  20. The Difference Between @Helpers and @Functions In WebMatrix

热门文章

  1. 通过JS 给这个input加一个事件 获得焦点,回车事件绑定
  2. javascript 字符串与正则
  3. django Table doesn't exist
  4. Vue.js中记不住 的东西
  5. maltab-图像拼接(左右两幅图)
  6. 68.纯 CSS 创作一本色卡
  7. java和.net连接数据库的方法
  8. Windows下查看自己电脑的网关mac以及手动获取新的地址
  9. Django09-中间件
  10. html页面转jsp后 乱码问题。