hackerrank挑战题——寻找正在运行的中位数
来源:互联网 发布:java运行命令行参数 编辑:程序博客网 时间:2024/05/20 19:46
题目如截图所示:
题目大概意思:
整数的数据集的中位数是数据集的中点值,其中相等数量的整数小于和大于值。要查找中值,必须首先以非递减顺序对整数数据集进行排序,然后:
- 如果数据集包含奇数个元素,中位数是排序样本的中间元素。在排序数据集中{1,2,3},2就是中位数。
- 如果数据集包含偶数个元素,中值是排序样本的两个中间元素的平均值。在排序数据集中{1,2,3,4}中,(2+3)/2 = 2.5就是中位数。
- 将第i个整数添加到正在运行的整数列表中;
- 查找更新列表的中位数(即,通第i个过元素的第一个元素)。
- 在新的一行打印列表更新的中间值。打印值必须是双精度数字到小数点(即12.3格式)。
第一行包含一个整数n,表示数据流中整数的个数。
后续行的每一行包含一个整数ai,将添加到您的列表中。
限制条件
1<n<10^5
0<ai<10^5
输出格式
将每个新整数添加到列表之后,将列表中更新的中位数打印为新行,作为一个单一的双精度数字缩放到小数点1位(即12.3格式)。
样本输入
6
12
4
5
3
8
7
样本输出
12.08.05.04.55.06.0
后面就是样例分析,这部分就不说了。
好,我们现在直接回归主题,根据题意,我们模拟成如下情况,直接上代码。
<?php function FindtheRunningMedian($n,$array){ if($n < 1 || $n > pow(10,5)){ echo '参数不符合要求!'; exit; } $temp_arr = array(); //一次添加一个数据到新的临时数组里,符合要求 foreach ($array as $key => $value) { if($value < 0 || $value > pow(10,5)){ echo '参数不符合要求!'; exit; } $temp_arr[] = $value; sort($temp_arr);//对新数组进行升序排序 $count = count($temp_arr); if($count % 2 == 0){// 偶数个数时 $start = ($count-2)/2;//最中间前一个值的位置 $end = $count/2;//最中间后一个值的位置 echo number_format(($temp_arr[$start] + $temp_arr[$end])/2,1),'<br>'; }else{// 奇数个数时 $position = ($count-1)/2; echo number_format($temp_arr[$position],1),'<br>'; } } } $array = array(12,4,5,3,8,7); FindtheRunningMedian(6,$array);
效果输出:
阅读全文
0 0
- hackerrank挑战题——寻找正在运行的中位数
- 2011年计算机联考真题——寻找2个序列的中位数
- 寻找3个数的中位数
- 寻找两个数组的中位数
- 寻找无序数组的中位数
- 寻找一个数组的中位数
- Google算法题:寻找中位数
- 寻找中位数
- 寻找中位数
- 寻找中位数
- HackerRank Find Median(中位数)
- 一道简单的寻找中位数的题目
- —— 一封给正在寻找工作的大学生的信
- 寻找两个排序数组的中位数
- SAS取消正在运行的语句——Run Cancel
- 正在运行的SQL
- Kingdom Division ——hackerrank
- 给所有正在寻找另一半的朋友
- The cryptopals crypto challenges——Set 1-1
- 张家界游玩攻略
- Python之scikit-learn01--决策树
- bzoj 3281: 小P的烦恼 支配树算法+dp
- 注册登录时输入11位手机号,不能输入字母和特殊字符,input number类型去掉上下加减箭头
- hackerrank挑战题——寻找正在运行的中位数
- UnicodeEncodeError: 'latin-1' codec can't encode characters in position 35-38: ordinal not in range(
- PHP历史进程
- xpath很有帮助的一些用法
- 向界面中加入自定义View的几种方式
- Django 表单
- C#回调函数学习心得
- 关于Hbuilder打包Bug—plus.maps.Marker setIcon不显示解决方法
- CentOS更改yum源与更新系统