题目1004:Median(查找中位数)
问题来源
http://ac.jobdu.com/problem.php?pid=1004
问题描述
给你两个非降序序列,让你求中位数。中位数为第(n+1)/2个数(从0开始计算)。
问题分析
这个问题有很多种解法,题目放的也很松。
第一种解法:暴力。直接把两个子串读进一个数组,sort一下取中位数。真是暴力。
第二种解法:读入两个子串A、B后,再开另外一个数组C,用两个索引依次按次序放入C,再求中位数。
第三种解法:直接用两个索引p、q指向两个数组的开头,索引的移动可以理解为丢掉前面的数。通过分析我们知道,索引移动次数为(n+m-1)/2,我们要找的中位数就是min(A[p],B[q])。
注意:解法二三里面有一个坑点,就是可能其中一个索引到头了,这时候只能移动另一个索引了, 最后我们的中位数也是A[p]或者B[q]了,数组越界取值可不行。
参考代码
- //
- // Created by AlvinZH on 2017/4/24.
- // Copyright (c) AlvinZH. All rights reserved.
- //
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- using namespace std;
- int n,m;
- long long a[];
- long long b[];
- int main()
- {
- while(~scanf("%d",&n))
- {
- for(int i=;i<n;i++)
- scanf("%lld",&a[i]);
- scanf("%d",&m);
- for(int i=;i<m;i++)
- scanf("%lld",&b[i]);
- long long ans;
- int p=,q=;
- for(int i=;i<=(n+m-)/;i++)
- {
- if(p==n) q++;
- else if(q==m) p++;
- else if(a[p]<b[q]) p++;
- else q++;
- }
- if(p==n) ans=b[q];
- else if(q==m) ans=a[p];
- else ans=min(a[p],b[q]);
- printf("%lld\n",ans);
- }
- }
作者: AlvinZH
出处: http://www.cnblogs.com/AlvinZH/
本人Github:https://github.com/Pacsiy/JobDu
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
题目1004:Median(查找中位数)的更多相关文章
- 题目1004:Median(qsort函数自定义cmp函数)
题目链接:http://ac.jobdu.com/problem.php?pid=1004 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- 九度oj 1004 Median 2011年浙江大学计算机及软件工程研究生机试真题
题目1004:Median 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:14162 解决:3887 题目描述: Given an increasing sequence S of N i ...
- 【九度OJ】题目1096-二分查找
题目1069:查找学生信息 这篇文章中提到的问题主要是由于调试平台Visual Studio和测试平台Online Judge的一些小差异,造成在Visual Studio中调试通过的代码,在输入OJ ...
- 【九度OJ】题目1173:查找 解题报告
[九度OJ]题目1173:查找 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1173 题目描述: 输入数组长度 ...
- 【九度OJ】题目1069:查找学生信息 解题报告
[九度OJ]题目1069:查找学生信息 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1069 题目描述: 输入 ...
- 【九度OJ】题目1177:查找 解题报告
[九度OJ]题目1177:查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1177 题目描述: 读入一组字符串(待操作的),再读入 ...
- 【九度OJ】题目1174:查找第K小数 解题报告
[九度OJ]题目1174:查找第K小数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1174 题目描述: 查找一个数组的第 ...
- Google 面试题:Java实现用最大堆和最小堆查找中位数 Find median with min heap and max heap in Java
Google面试题 股市上一个股票的价格从开市开始是不停的变化的,需要开发一个系统,给定一个股票,它能实时显示从开市到当前时间的这个股票的价格的中位数(中值). SOLUTION 1: 1.维持两个h ...
- LeetCode 4 Median of Two Sorted Arrays 查找中位数,排除法,问题拓展 难度:1
思路:设现在可用区间在nums1是[s1,t1),nums2:[s2,t2) 1.当一个数组可用区间为0的时候,由于另一个数组是已经排过序的,所以直接可得 当要取的是最小值或最大值时,也直接可得 2. ...
随机推荐
- 电话号码的字母组合 · Letter Combinations of a Phone Number
[抄题]: Given a digit string excluded 01, return all possible letter combinations that the number coul ...
- cmake 查看配置选项
cmake 查看配置选项可以用如下命令 cmake . -LH 查看help > cmake -h cmake version 2.6-patch 4 Usage cmake [optio ...
- CMAKE 教程前两章节学习
原文 https://cmake.org/cmake-tutorial/ 以下是一个循序渐进的教程,它覆盖了CMAKE帮助改进的通常的构建系统的话题.许多话题在<掌握CMAKE>(< ...
- 简述json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,他的数据结构与Python中的字典一样,键值对来表示数据间的关系,可以包含列表. 在编写 ...
- js 右击事件
$.fn.extend({ "rightclick": function (fn) { $(this).mousedown(function ( ...
- mvc api odata查询选项之 $inlinecount $format 选项(转)
出处:http://www.it165.net/pro/html/201505/40236.html 网上百度“odata 语法”会出来很多结果,其中有一项是比较一致的,那就是odata支持一下几种语 ...
- 使用word 2010 发布csdn博客
目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...
- JavaScript语言精粹 笔记06 方法
JS包含了少量可用在标准类型上的标准方法. ArrayFunctionNumberObjectRegExpString Array array.concat(item...) concat方法返回一个 ...
- (网络流)Food -- hdu -- 4292
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4292 Food Time Limit: 2000/1000 MS (Java/Others) Me ...
- 开源WebGIS实施方案(四):GeoServer发布PostGIS数据
GeoServer可以支持多种格式的数据源,本文只介绍其中一种,即PostGIS数据源. 新建一个工作区.工作区这个名字也是一变再变,早前叫做目录,后来改为工作空间,如今已变为工作区了. 添加数据存储 ...