P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内)
如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。
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轴。
5 1 2 5 3 4 6 7 5 9 0
4 6 7 5 9 0
N=int(input())
i=0
X=[]
Y=[]
while i<N:
a,b=input().split(" ")
X.append(int(a))
Y.append(int(b))
i=i+1
datas=zip(X,Y)
datass1=sorted(datas,key=lambda x:x[0])
datass2=zip(*datass1)
X,Y = [list(x) for x in datass2]
for i in range(0,N-1):
if Y[i]==max(Y[i:N]):
print(X[i],Y[i],end='\n')
i=i+1
else:
i=i+1
print(X[N-1],Y[N-1])
n = int(input())
listx=[]
listy=[]
for i in range(n):
x,y=list(map(int, input().split(" ")))
listx.append(x)
listy.append(y)
Z = zip(listx,listy)
Z = sorted(Z)
newx,newy=zip(*Z)
newx=list(newx)
newy=list(newy)
for i in range(n):
if newy[i]== max(newy[i:]):
print(newx[i],newy[i]) if __name__ == "__main__": n = int(input()) a = [] for _ in range(n): a.append(list(map(int,input().split()))) a.sort(key=lambda x: x[0]) j = len(a) - 2 tmpy = a[-1][1] for i in range(len(a) - 1, -1, -1): if tmpy < a[i][1]: tmpy = a[i][1] a[j] = a[i] j -= 1 for k in range(j + 1, len(a)): print(a[k][0], a[k][1])通过80%,在原来的数组里修改,想不通为啥还是爆内存,怀疑这个python有问题,欢迎大佬指正
cnt =int(input())
every =[]
result =[]
for i in range(cnt):
num =[int(x) for x in input().split()]
every.append(num)
every.sort(key=lambda t:t[0])
maxY =-1
for i in reversed(range(len(every))):
if every[i][1] > maxY:
result.append(every[i])
maxY =every[i][1]
for i in reversed(range(len(result))):
print(result[i][0], result[i][1]) 算法和热评第一的大佬一样的……70% 超时或者80%超内存交替出现……有没有大佬救救我