Leetcode题库——4.寻找两个有序数组的中位数
@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
Leetcode题库——4.寻找两个有序数组的中位数的更多相关文章
- Leetcode(4)寻找两个有序数组的中位数
		Leetcode(4)寻找两个有序数组的中位数 [题目表述]: 给定两个大小为 m 和 n 的有序数组 nums1 和* nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O( ... 
- LeetCode Golang  4. 寻找两个有序数组的中位数
		4. 寻找两个有序数组的中位数 很明显我偷了懒, 没有给出正确的算法,因为官方的解法需要时间仔细看一下... func findMedianSortedArrays(nums1 []int, nums ... 
- Java实现 LeetCode 4 寻找两个有序数组的中位数
		寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ... 
- 0004. 寻找两个有序数组的中位数(Java)
		4. 寻找两个有序数组的中位数 https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 最简单的就是用最简单的,把两个数组分别抽出然 ... 
- leetcode刷题四<寻找两个有序数组的中位数>
		给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ... 
- 【LeetCode】寻找两个有序数组的中位数【性质分析+二分】
		给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ... 
- leetcode题目4.寻找两个有序数组的中位数(困难)
		题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 ... 
- 寻找两个有序数组的中位数  C++实现leetcode系列(四)
		给定两个大小为 m 和 n 的有序数组 nums1和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 不 ... 
- leetcode -- 寻找两个有序数组的中位数
		题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ... 
随机推荐
- SM30 客户端 有“不可修改”的状态
			SM30维护自定义数据表时,遇到提示信息,有“不可修改”的状态,无法修改数据. 查询详细信息,有一条:客户端特定对象不能在此客户端中进行更改. 检查了一下自定表设置,发现自定义表之前创建时,Deliv ... 
- node vue 开发环境部署时,外部访问页面出现: Invalid Host header 服务器域名访问出现的问题
			这是新版本 webpack-dev-server 出于安全考虑, 默认检查 hostname,如果hostname不是配置内的,将中断访问.顾仅存在于开发环境: npm run dev,打包之后不会 ... 
- 树莓派 ubuntu 系统下修改config.txt文件调整分辨率记录
			参考 https://www.jianshu.com/p/99eea4db21c4 注:操作前最好先备份个 config.txt 文件 防止悲剧 防止悲剧 防止悲剧 终端下 进入boot/config ... 
- java第一天!
			public class Main { public static void main(String[] args)//main主函数 { final double PI=3.14;//定义常量,小数 ... 
- 修复Gradle CreateProcess error=206
			插件地址:https://plugins.gradle.org/plugin/ua.eshepelyuk.ManifestClasspath 修复Window系统中Gradle 路径太长问题, Fix ... 
- [转]超级强大的SVG SMIL animation动画详解
			超级强大的SVG SMIL animation动画详解 本文花费精力惊人,具有先驱前瞻性,转载规则以及申明见文末,当心予以追究.本文地址:http://www.zhangxinxu.com/wordp ... 
- 20155235 《网络攻防》 实验一 逆向及Bof基础实践说明
			20155235 <网络攻防> 实验一 逆向及Bof基础实践说明 实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函 ... 
- c++ 文件操作 重新命名 删除
			教学内容: l 文件重命名rename l 文件删除remove 文件重命名rename int rename( const char *oldname, const char *newname ... 
- django学习笔记(1)
			Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句 自带的强大的后台功能 几行简单的 ... 
- Install-Package:QRCoder已拥有为System.Drawing.Common定义的依赖项
			error_log PM> Install-Package QRCoder -Version 1.3.3 Install-Package : "QRCoder"已拥有为&qu ... 
