最大点的集合

最大点的集合

描述

给定一个坐标点列表 Points,其中Points 中 Point[i][0] 表示横轴坐标,Points[i][1] 表示纵轴坐标。
当存在点 p 满足 Points 中任意点都不在 p 的右上方区域内(横纵坐标都大于p),则称其为最大点。
返回所有最大点,列表中的最大点按照 X 轴从小到大的方式排序。

  • Points 点集中点的个数范围是: [1, 500000]
  • points[i][0] 和 points[i][1]的范围是: [0, 10^9]
  • 保证横坐标和纵坐标都不重复

说明

 

样例

示例 1:
输入:
Points = [[1, 2], [5, 3], [4, 6], [7, 5], [9, 0]]
输出: [[4, 6], [7, 5], [9, 0]]
解释: 不存在其他点的横纵坐标都大于点[4, 6], [7, 5], [9, 0]
示例 2:
输入:
Points = [[9,10],[7,8],[8,9],[1,1],[5,2]]
输出: [[9, 10]]
解释: 不存在其他点的横纵坐标都大于点[9, 10]

测试数据(每行一个)如何理解测试数据?

class Solution:
    """
    @param Points: a list of [x, y]
    @return: return a list of points
    """
    def MaximumPointsSet(self, Points):
        # write your code here
        if len(Points) == 0: return []
        
        result = []
        Points = sorted(Points, key = lambda X : -X[0])
        max_y = -1
        l = len(Points)
        
        for i in range(l):
            if Points[i][1] > max_y:
                result.append(Points[i])
            
            max_y = max(Points[i][1], max_y)
        result.sort()
        
        return result

 

posted @ 2020-06-15 02:15  风不再来  阅读(174)  评论(0编辑  收藏  举报