由题意得,横坐标相同的点我们不用关心,只需要将所有点的x取出并去重排序,从最小的x[0]位置开始画矩形,这个矩形可以覆盖到横坐标为x[0],x[0]+w中所有的点,到i遇到横坐标比x[0]+w大时,再从x[i]开始画矩形。矩形+1。直到结束即可。
class Solution:
def minRectanglesToCoverPoints(self, points: List[List[int]], w: int) -> int:
# 创建数组变量,取出所有点的x坐标,去重后并且对数组排序
x_list = sorted(list(set([point[0] for point in points])))
rect = 1
x = x_list[0]
for item in x_list:
if item - x > w:
x = item
rect += 1
return rect