吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3200|回复: 9
收起左侧

[Python 转载] [算法]求中位数 LeetCode第4题

[复制链接]
zerglurker 发表于 2018-11-27 22:22
给定两个大小为 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
官方给的算法比较复杂,主要是利用递归和分而治之的思想,不断分割数据集合,直到最后找到结果
我觉得代码量有点大,所以尝试了下我自己的方式其实关键在于排序,如果能够排序,则找中位数其实很简单因此我的想法就是合并数组,然后排序,然后返回中位数
[Python] 纯文本查看 复制代码
class Solution:
    def findMedianSortedArrays(self, nums1: list, nums2: list):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        nums1.extend(nums2)
        nums1.sort()
        length = len(nums1)
        if length % 2 == 0:
            return (nums1[int(length / 2) - 1] + nums1[int(length / 2)]) / 2
        else:
            return float(nums1[int((length + 1) / 2) - 1])

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| zerglurker 发表于 2018-11-27 22:25
这个或许不是最快的解答算法,但是我觉得应该是最简单的解答算法
而且已经通过了提交
swjtu_ray 发表于 2018-11-27 23:15
kizzlepc 发表于 2018-11-28 00:34
看到这道题的时候,我想到的解题思路竟然和楼主一样
huamu 发表于 2018-11-28 02:04
我想到的解题思路也是这样
dhs347 发表于 2018-11-28 09:44
学习了,楼主。。。
Kris_Shin 发表于 2018-11-28 10:53
我的
[Python] 纯文本查看 复制代码
class Solution:
    def findMedianSortedArrays(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: float
        """
        nums = (nums1 + nums2)
        nums.sort()
        if len(nums) % 2:
            return nums[(len(nums) - 1) // 2]
        return (nums[len(nums)//2] + nums[(len(nums)//2) - 1]) / 2
        


楼主明显是有其他语言基础的
 楼主| zerglurker 发表于 2018-11-28 13:54
swjtu_ray 发表于 2018-11-27 23:15
问题就在于你用的什么排序

是的,最好的排序算法,时间复杂度,就是O(m+n)
m和n是两个数组的长度
不过空间复杂度就高了
但是算法就是利用空间和时间互换来满足需求的
 楼主| zerglurker 发表于 2018-11-28 14:06
我打算从头到尾做一遍LeetCode的题库
目前到第4题了,前面做过的几题地址如下,有兴趣的朋友可以一起关注:
求两数和:
https://www.52pojie.cn/forum.php ... d=826089&page=1
最长子串:
https://www.52pojie.cn/forum.php ... d=829137&page=1
不同的二叉树:
https://www.52pojie.cn/forum.php ... d=823496&page=1
小黑LLB 发表于 2019-2-21 22:16
学到了  感谢楼主分享 好棒
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-18 02:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表