博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字节跳动之算法(三):二维平面整数点集最大值问题(50%-80%准确率)
阅读量:3916 次
发布时间:2019-05-23

本文共 1955 字,大约阅读时间需要 6 分钟。

题目:

P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内)

如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。

输入描述:第一行输入点集的个数 N, 接下来 N 行,每行两个数字代表点的 X 轴和 Y 轴。对于 50%的数据,  1 <= N <= 10000;对于 100%的数据, 1 <= N <= 500000;
输出描述:输出“最大的” 点集合, 按照 X 轴从小到大的方式输出,每行两个数字分别代表点的 X 轴和 Y轴。

输入例子1:

51 25 34 67 59 0

输出例子1:

4 67 59 0

输入例子2:

10

298498081 747278511
427131847 460128162
939984059 817455089
911902081 683024728
474941318 6933274
140954425 607811211
336122540 629431445
208240456 458323237
646203300 469339106
106410694 436340495

输出例子:

939984059 817455089

Java代码:

import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Scanner;public class Main {	public static List
list = new ArrayList
(); public static List
listLast = new ArrayList
();//全局数组链表,最后的max值 public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n = sc.nextInt(); List
test = new ArrayList
();//数组链表 for(int i = 0; i < n ;i++){ int a = sc.nextInt(); int b = sc.nextInt(); Integer []arr = {a,b,a+b}; test.add(i,arr); } findMaxCollections(test); resetList(list); for(int i = listLast.size()-1;i>=0;i--){ System.out.println( listLast.get(i)[0] +" "+ listLast.get(i)[1] ); } } public static void findMaxCollections(List
test){ //当前的x和y int current_X = 0; int current_Y = 0; for(int i = 0;i < test.size();i++){ current_X = test.get(i)[0]; current_Y = test.get(i)[1]; for(int j = 0;j
test){ int[] yPoint = new int [test.size()]; int[] yPointLast = new int [test.size()]; for(int i = 0;i
=0;i--){ yPointLast[i] = yPoint[i]; } for(int i = 0;i

解析:这个题主要是要寻找元素点是否是最大点,制约条件就是右上角是否还存在元素点大于他的存在。其实就是以要假设元素该点为原点进行坐标建立,且第一象限中的不存在任何元素点即可。不存在x>x0,y>y0即可。不满足该条件一律不存在。

感想: 博主在算法设计中走了很多弯路,感觉还有很多的便捷曲径去走的,但是还是基于对数据结构的把握太浅。。像这类问题是要多点进行思考就行了。

转载地址:http://jctrn.baihongyu.com/

你可能感兴趣的文章
CAP 3.0 版本正式发布
查看>>
Xamarin.Forms弹出对话框插件
查看>>
UnitTest in .NET(Part 4)
查看>>
大量SQL的解决方案——sdmap
查看>>
与其每天重复,不如试着构建「正反馈闭环」
查看>>
【Azure学习.01】先从账号注册开始
查看>>
如何运用领域驱动设计 - 工作单元
查看>>
服务器应用服务为何卡顿?原来是内存耗尽惹的祸!
查看>>
什么?原来C#还有这两个关键字
查看>>
Mbp,一个用于学习.net core的开发框架
查看>>
【Magicodes.IE 2.0.0-beta1版本发布】已支持数据表格、列筛选器和Sheet拆分
查看>>
net下的高性能轻量化半自动orm+linq的《SqlBatis》
查看>>
如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出
查看>>
在 Blazor WebAssembly 中使用 gRPC-Web
查看>>
【实战 Ids4】║ 在Swagger中调试认证授权中心
查看>>
.NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
查看>>
WTM系列视频教程:View和Taghelper
查看>>
面试官:你连HTTP请求Post和Get都不了解?
查看>>
.NET Core 3.0 即将结束生命周期,建议迁移 3.1
查看>>
开源、免费、企业级的SiteServer CMS .NET CORE 7.0 预览版发布
查看>>