@author: ZZQ

@software: PyCharm

@file: findMedianSortedArrays.py

@time: 2018/10/10 19:24

说明:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。你可以假设 nums1 和 nums2 不同时为空。

示例 1: nums1 = [1, 3] nums2 = [2] 中位数是 2.0

示例 2: nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5

思路:空间换时间。首先判断合并后的数组奇偶,然后开辟新的空间l3来存放合并后的数据元素,存放到中位种停止,l3的最后一个元素就是中位数。

或者,用两个指针来存放中位数和中位数上一个元素的值,不断向前直至找到中位数。

class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
n = len(nums1)
m = len(nums2)
if (n+m) % 2 == 0:
flag = True
else:
flag = False
middle_index = (n + m) / 2 + 1
nums1_index, nums2_index = 0, 0
l3 = []
while nums1_index < n and nums2_index < m:
if nums1[nums1_index] > nums2[nums2_index]:
l3.append(nums2[nums2_index])
nums2_index += 1
else:
l3.append(nums1[nums1_index])
nums1_index += 1
if len(l3) == middle_index:
break
while nums1_index < n and nums2_index == m:
if len(l3) == middle_index:
break
l3.append(nums1[nums1_index])
nums1_index += 1
if len(l3) == middle_index:
break
while nums2_index < m and nums1_index == n:
if len(l3) == middle_index:
break
l3.append(nums2[nums2_index])
nums2_index += 1 if flag:
middle_value = (l3[len(l3)-2] + l3[len(l3)-1])/2.0
else:
middle_value = l3[len(l3)-1]
return middle_value

最新文章

  1. POJ 2240 - Arbitrage(bellman_ford &amp; floyd)
  2. Ogre代码学习之1——Ogre中地形lod的基础:deltaHeight的计算
  3. [转载] Genymotion 解决虚拟镜像下载速度特别慢的问题
  4. SVO实时全局光照:Sparse Voxel Octree based Global Illumination (SVO GI)
  5. 去除字符串中空格的方法(2016.1.12P141-2)
  6. C语言中的字符串拷贝函数strcpy和内存拷贝函数memcpy的区别与实现
  7. C++多线程技术windows常用方法
  8. Android tabhost下的activity怎样获取传来的值
  9. srpm包的编译方式
  10. C# 自定义控件的一些文章和博客
  11. win10 uwp 列表模板选择器
  12. JDBC操作数据库的三种方式比较
  13. Spark2.1.0——运行环境准备
  14. 手写JavaScript常用的函数
  15. [Tools] 一种调试 Android App 接口的方式 (Fiddler/Wireshark)
  16. centos/ubuntu 双击运行 .sh(shell)文件
  17. lua 语言笔记
  18. Fiddler 抓包工具
  19. python, ImageFont
  20. PHP4个载入语句的区别

热门文章

  1. iOS Class结构分析
  2. Linux基础入门 第二章 Linux终端和shell
  3. MepReduce-开启大数据计算之门
  4. Linux系统编译Openssl步骤
  5. 20155327Exp2 后门原理与实践
  6. CF 1093 G. Multidimensional Queries
  7. RESTful简介
  8. SQL 上线平台(内含全部完整资料)
  9. UWP 滚动条私人定制
  10. HTML5--details活学活用