第一次在leetcode上做hard级别的题目

今天第一次在LeetCode做hard级别的题目:Median of Two Sorted Arrays.

题目大意是这样的:给两个排好序的数组,让找出它们合成一个数组的时候的中位数。数组的长度分别为m,n,要求时间复杂度为O(log(m+n))。本来拿到这个题目,一眼看过去感觉有点熟悉,有点归并排序的影子。如果真是归并排序的话,这已经是最后一步。但是题目要求的时间复杂度是O(log(m+n)),而用归并的话基本上是m+n级别的。做出来不难,难的是控制这个时间复杂度。


折腾了半天,吭吭哧哧弄出一个solution,总体思路是找到较短的那个数组,找出它的中位数,然后根据该数可以每次删去较短数组长度的那么多的项,具体可以见下面代码。时间复杂度不好估计,但是应该<O(logm+logn),基本上可以认为是达到要求了吧。

我的代码:

#!/usr/bin/python
#coding=utf8
"""
# Author: qwqian
# Created Time : 2017-12-17 13:22:31

# File Name: medianOfTwoSortedArray.py
# Description:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值