今日头条笔试题目,还是没过.效率不够
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
''' 链接:https://www.nowcoder.com/questionTerminal/f652bf7904bf4905804fa3bc347fdd2a 来源:牛客网 P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内) 如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。 ''' #下面来做题 #首先要有预处理思想,先对x坐标进行排序,python对tuple自动按照第一个坐标排序 number=input() number=int(number) #保存所有的点 listme=[] for i in range(number): a1=input() a1=a1.split(' ') a=int(a1[0]) b=int(a1[1]) listme.append((a,b)) listme=sorted(listme) #为了效率先找到y max 和y min ,然后最后重新扫一次listme找到ymax和ymin中间的点. #应该逆着找. listme=listme[::-1] b=[] b.append(listme[0]) tmp=listme[0][1] for i in range(1,len(listme)): if listme[i][1]>tmp: b.append(listme[i]) tmp=listme[i][1] b=b[::-1] for i in range(len(b)): print(b[i][0],end=' ') print(b[i][1]) ''' 5 1 8 2 7 3 6 4 5 5 99 print("祝各位身体健康", end=' ') print(23112,end=' ') print(3243242) '''