今日头条笔试题目,还是没过.效率不够

'''
链接: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)





'''
View Code

 

posted on 2018-05-03 23:02  张博的博客  阅读(837)  评论(0编辑  收藏  举报

导航