2017今日头条网招在线编程题(部分)
来源:互联网 发布:nga 数据库 编辑:程序博客网 时间:2024/05/16 18:12
第一题
P 为 给 定 的 二 维 平 面 整 数 点 集 。 定 义 P 中 某 点 如 果 × 满 足 P 中 任 意 点 都 不 在 × 的 右 上 方 区 域 内 ( 横 纵 坐标 都 大 于 × ) , 则 称 其 为 “ 最 大 的 ” 。 求 出 所 有 “ 最 大 的 ” 点 的 集 合 。 〈 所 有 点 的 横 坐 标 和 纵 坐 标 都 不 重 复 . 坐 标 轴 范 围 在 [ 0 , 1 e9 ] 内 ) 如 下 图 实 心 点 为 满 足 条 件 的 点 的 集 合 。
请 实 现 代 码 找 到 集 合 P 中 的 所 有 ” 最 大 “ 点 的 集 合 并 输 出 。 第 一 行 输 入 点 集 的 个 数 N , 接 下 来 N 行 , 每 行 两 个 数 字 代 表 点 的 x 轴 和 Y 轴 。
输 出
输 出 “ 最 大 的 ” 点 集 合 , 按 照 x 轴 从 小 到 大 的 方 式 输 出 , 每 行 两 个 数 字 分 别 代 表 点 的 x 轴 和 Y 轴 。
样 例 输 入
51 25 34 67 69 0
class Pair implements Comparable<Pair>{ int x; int y; public Pair(int x, int y) { this.x = x; this.y = y; } @Override public int compareTo(Pair o) { return x==o.x ? o.y - y : x - o.x ; //X升序Y降序 }}public class Main{ public static void main(String args[]) { Scanner in = new Scanner(System.in); int n = in.nextInt(); Pair[] arr = new Pair[n]; for ( int i = 0; i < n; i++ ) { int x = in.nextInt(); int y = in.nextInt(); arr[i] = new Pair(x, y); } Arrays.sort(arr); List<Pair> res = new ArrayList<>(); for ( int i = 0; i < n; i++ ) { boolean f = true; for ( int j = 0; i!=j && j < n; j++ ) { if(arr[i].x < arr[j].x && arr[i].y < arr[j].y) { f = false; break; } } if(f) res.add(arr[i]); } res.forEach((Pair o)->System.out.println(o.x + " " + o.y)); in.close(); }}
另一种解法:
Scanner in = new Scanner(System.in);int n = in.nextInt();Pair[] arr = new Pair[n];for ( int i = 0; i < n; i++ ) { int x = in.nextInt(); int y = in.nextInt(); arr[i] = new Pair(x, y);}Arrays.sort(arr);List<Pair> res = new ArrayList<>();res.add(arr[n-1]);int maxY = arr[n-1].y;for ( int i = n-2; i >= 0; i-- ) { if( arr[i].y >= maxY ) res.add(arr[i]); maxY = Math.max(maxY, arr[i].y);}res.forEach((Pair o)->System.out.println(o.x + " " + o.y));in.close();
第二题
给 定 一 个 数 组 序 列 , 需 要 求 选 出 一 个 区 间 , 使 得 该 区 间 是 所 有 区 间 中 经 过 如 下 计 算 的 值 最 大 的 一 个 : 区 间 中 的 最 小 数 * 区 间 所 有 数 的 和 最 后 程 序 输 出 经 过 计 算 后 的 最 大 值 即 可 , 不 需 要 输 出 具 体 的 区
间 。 如 给 定 序 列 [ 6 2 1 ] 则 根 据 上 述 公 式 , 可 得 到 所 有 可 以 选 定 各 个 区 间 的 计 算 值
从 上 述 计 算 可 见 选 定 区 间 [ 6 ] , 计 算 值 为 36 , 则 程 序 输 出 为 36 。
区 间 内 的 所 有 数 字 都 在 [ 0 , 100 ] 的 范 围 内。
输 入
第 一 行 输 入 数 组 序 列 个 数 , 第 二 行 输 入 数 组 序 列 。
输 出
输 出 数 组 经 过 计 算 后 的 最 大 值 。
样 例 输 入
3
6 2 1
样 例 输 出
36
Hint
对 于 50 % 的 数 据 , 1 < = n < = 10000 .
对 于 1 % 的 数 据 , 1 < = n < = 500000 .
Scanner in = new Scanner(System.in);int n = in.nextInt();int[] a = new int[n];for ( int i = 0; i < n; i++ ) a[i] = in.nextInt();Arrays.sort(a);int sum = 0;for ( int i = 0; i < n; i++ ) sum += a[i];int max = a[0] * sum;for ( int i = 0; i < n-1; i++ ) { sum -= a[i]; max = Math.max(max, a[i+1]*sum);}System.out.println(max);in.close();
- 2017今日头条网招在线编程题(部分)
- 今日头条校招2016-09-28在线编程题(2题)
- String Shifting- 今日头条校招2016-09-28在线编程题
- 2018科大讯飞在线笔试题(编程题部分)
- 【牛客网】马三来刷题之回文解码(今日头条2017年客户端实习在线笔试题)
- 今日头条2017年实习生在线笔试题1
- 2017今日头条测试编程题
- 【算法】今日头条2017编程题
- 2017今日头条秋招编程
- 今日头条2017秋季校招在线编程题解法参考
- 今日头条——校招在线编程题《字典序》
- 今日头条——校招在线编程题《头条校招》
- 今日头条编程题
- 今日头条2017年秋招编程题“最大”点集
- 今日头条 2017年秋招编程题 :“最大乘积和”
- 今日头条2017秋招笔试编程题
- 360在线笔试(部分)
- websocket在线电子书(部分)
- 奋斗群群赛5总结与心得
- python中的__dict__,__getattr__,__setattr__
- spark提交java程序异常
- BZOJ 4025: 二分图 并查集判二分图 CDQ分治
- 反射--认识Class类
- 2017今日头条网招在线编程题(部分)
- php+中文分词scws+sphinx+mysql+只作为个人笔记,请点击下面链接到原地址查看
- [shell] eval
- DirectShow学习笔记
- React使用PropTypes进行类型检测
- JDBC批量向数据库插入数据(十)
- python<win10下使用定时任务执行爬虫程序>
- 一个分类方法:在降维的同时能增大类别分离度,在手写数字数据集及鸢尾花的图片数据集上做了对比试验
- Mysql 高级sql操作: DELETE,UPDATE与LEFT JOIN