1338. 停车困境

1338. 停车困境

中文English

停车场里停着许多汽车。 停车位是一条很长的直线,每米都有一个停车位。 当前很多汽车停放,您想通过建造屋顶来遮雨挡雨。 要求至少有k辆车的车顶被车顶遮盖,要覆盖k辆车的车顶的最小长度是多少?
该函数具有以下参数:

  • cars:长度的整数数组,表示停放汽车的停车位
  • k:整数,表示必须被车顶遮盖的汽车数量

样例

示例:
输入:
cars: [2, 10, 8, 17]
k: 3
输出: 9
解释:您可以建立长度为9的屋顶,覆盖从第2个到第10个的所有停车位,因此在第2、10、8个位置覆盖3辆车,没有较短的可以覆盖3辆车的车顶,所以答案是 9

注意事项

  • 1 <= n <= 10^5
  • 1 <= k <= n
  • 0 <= cars[i] <= 10^14
  • 所有车位上面的车都是唯一的
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    """
    @param cars:  integer array of length denoting the parking slots where cars are parked
    @param k: integer denoting the number of cars that have to be covered by the roof
    @return: return the minium length of the roof that would cover k cars
    """
    '''
    1.首先进行排序,然后跟进k进行切割多少位,初始化res = [],给出所有的末位-初位+1,append到res里面,最后返回最小值即可。
    '''
    def ParkingDilemma(self,cars,k):
        cars.sort()
        if len(cars) == k:
            return cars[-1] - cars[0] + 1
        res = []
        for i in range(len(cars)-k):
            res.append(cars[i:i+k][-1]-cars[i:i+k][0]+1)
        return min(res)

 

posted @ 2020-04-19 00:55  风不再来  阅读(325)  评论(0编辑  收藏  举报