二分搜索查最小数,from mid to分别为区间的第一个,中位数,和最后一个数if(frommid)//发现逆序,则最小值在这个区间,2分搜索区间to = mid;if(mid>to)//发现逆序,则最小值在这个区间,2分搜索区间from = mid;代码如下: 1 class Solution ...
分类:
其他好文 时间:
2015-04-12 01:18:29
阅读次数:
109
分析可知,最优的x应该在区间中的数排列后最中间的地方选择。由于区间的数个数有奇偶之分,于是当奇数个时,就是中位数了。偶数个时,就是排列后中间两数区间的任意一个。可以应用划分树求得前半部分,树状数组统计。#include #include #include #include #define LL __...
分类:
其他好文 时间:
2015-04-09 21:46:50
阅读次数:
140
题意: 有n*m的 格子。 然后输入每个格子的人数。 最后决定所有人到达一个格子,要求每个人走的路都最少。
做法:横坐标为i 的 所有格子人数和 放在numr【i】里 。 纵坐标同理。 这个格子的 横坐标和纵坐标的选择是不会相互影响的。 我们只用找到 所有格子的总人数和,取一个中位数mid=sum/2,然后判断第mid个人在第几行,那行就是答案的横坐标。
因为,如果这个横坐标向下移,因为它本来是中位数,所以上面的人数肯定变得大于下面的人数。而结果会导致,这个横坐标上面的人 要多走一步,下面的人少走一...
分类:
其他好文 时间:
2015-04-07 21:48:47
阅读次数:
169
前几天参加了阿里的在线笔试,报的职位是算法工程师,笔试感觉难度适中,选择题包含数据结构、离散数学、小的智力问题还有一些读程序选结果的题目。其中数据结构和排列组合最多。当时比较慌乱,没做记录。只记下了三个附加题。
第一题很简单。要求实现一个方法,在两个排好序(升序)的整型数组中找到中位数。传入4个参数,分别是两个数组和他们的大小。这个题目既然简单就要写的高效一些。我用的归并排序的思想,将两个数组合...
分类:
编程语言 时间:
2015-04-06 15:48:26
阅读次数:
304
即求连续k个数的中位数。。。我们维护两个堆,一个大根堆一个小根堆:小根堆维护的是区间前一半大的数,大根堆维护的是区间后一半小的数,且小根堆中的所有数都比大根堆内所有数大这样子中位数就是大根堆的堆顶元素 or 小根堆的堆顶元素 or 他们的平均数(貌似并没有区别QAQ)每次区间移动一位的时候,把其中的...
分类:
其他好文 时间:
2015-04-05 14:35:20
阅读次数:
135
【题 目】数组中有一个数字的出现次数超过了该数组长度的一半,找出这个数字。 【思 路1】由于要寻找的数字的出现次数超过了数组长度的一半,所以如果将该数组排序,那么它的中位数必然是我们要寻找的数字,所以我们的任务就是对该数组进行排序,而性能最好的快速排序的时间复杂度为O(nlogn),我们可以直...
分类:
编程语言 时间:
2015-04-04 22:30:23
阅读次数:
257
题目:设X[0:n-1]和Y[0:n-1]为两个数组,每个数组中含有n个已排好序的数。试设计一个O(logn)时间算法,找出X和Y的2n个数的中位数思路:1.要求时间为O(logn),所以应该是用分治法或递归a: 1 3 5 7 9 中位数 am=5b: 2 4 6 8 10 中位数bm=6因为 a...
分类:
其他好文 时间:
2015-04-03 16:54:18
阅读次数:
135
题目地址:https://leetcode.com/problems/median-of-two-sorted-arrays/
这道题就是求两个有序序列的中位数。这也是2015年4月阿里实习生招人附加题第一题
我用的是归并算法,时间复杂度和空间复杂度都为O(M+N)
class Solution {
public:
double findMedianSortedArrays(int ...
分类:
其他好文 时间:
2015-04-03 11:18:54
阅读次数:
134
给你n个数,每次插入一个数,当插入数的数量为奇数的时候,我们就输出中位数
分类:
其他好文 时间:
2015-04-02 14:50:37
阅读次数:
515
package kpp.base;/** * 求两个有序数组的中位数 * 此代码适用于两个数组长度不等的情况 * @author kpp * */public class TwoArrayMedian { public static void main(String[] args) { ...
分类:
编程语言 时间:
2015-04-01 00:17:53
阅读次数:
156