无序数组A和B,线性时间复杂度,空间复杂度O(1) ,求中位数
2012-10-27 16:26
323 查看
两个无序数组A和B,长度分别是m和n,求中位数,要求时间复杂度O(m+n),空间复杂度O(1)
来自:人人网面试题,5分钟出思路,10分钟出代码
分析:乍一看题目,不知道在考什么。
把问题简化下。有一个无序数组,长度m+n,在O(m+n)时间内找出中位数,空间复杂度O(1)。
可以用快速查找在线性时间里找出中位数。
若分布在两个数组里,该怎么找?
是否可以把两个数组看成是一个,当查找到数组边界时,做一次边界判断,跳到另一个数组继续查找。
判断起来有点麻烦,但应该可以实现。欢迎讨论
来自:人人网面试题,5分钟出思路,10分钟出代码
分析:乍一看题目,不知道在考什么。
把问题简化下。有一个无序数组,长度m+n,在O(m+n)时间内找出中位数,空间复杂度O(1)。
可以用快速查找在线性时间里找出中位数。
若分布在两个数组里,该怎么找?
是否可以把两个数组看成是一个,当查找到数组边界时,做一次边界判断,跳到另一个数组继续查找。
判断起来有点麻烦,但应该可以实现。欢迎讨论
相关文章推荐
- 两个无序数组分别叫A和B,长度分别是m和n,求中位数,要求时间复杂度O(m+n),空间复杂度O(1) 。
- 两个无序数组分别叫A和B,长度分别是m和n,求中位数,要求时间复杂度O(m+n),空间复杂度O(1) 。
- 用线性时间选择来找无序数组的中位数
- 最大子数组之和(线性时间复杂度,C语言实现)
- 用线性时间复杂度实现找出数组中出现一次的元素
- 时间和空间复杂度最少的求两个升序数组的中位数
- 用线性时间复杂度实现找出数组中出现一次的元素
- 用线性时间复杂度实现找出数组中出现一次的元素
- 用线性时间复杂度实现找出数组中出现一次的元素
- 现有1,2……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且只能交换两个数
- 求一个数组的中位数时间复杂度为O(n)
- 用线性时间复杂度实现找出数组中出现一次的元素
- O(n)时间内求无序数组中与中位数最近的k个数
- 实现一个排序算法,对0~n-1范围内的n个不重复的无序数组进行排序,时间复杂度为O(n),空间复杂度为O(1)。
- 深入线性时间复杂度求数组中第K大数的方法详解
- 排序1,2......n的无序数组,时间复杂度为o(n),空间复杂度为o(1)
- 线性时间复杂度求数组中第K大数
- 线性时间复杂度求数组中第K大数
- 以O(logn)的时间复杂度计算两个数组的中位数
- 线性时间复杂度求数组第n大