使用bucket
class Solution: def kEmptySlots(self, bulbs: List[int], K: int) -> int: size = len(bulbs) // (K + 1) + 1 maxBuckets = [None] * size minBuckets = [None] * size for i in range(len(bulbs)): bulb = bulbs[i] bucket = bulb // (K + 1) if not maxBuckets[bucket] or maxBuckets[bucket] < bulb: maxBuckets[bucket] = bulb if not minBuckets[bucket] or minBuckets[bucket] > bulb: minBuckets[bucket] = bulb if bucket != 0 and maxBuckets[bucket - 1]: if minBuckets[bucket] - maxBuckets[bucket - 1] == K + 1: return i + 1 if bucket != size - 1 and minBuckets[bucket + 1]: if minBuckets[bucket + 1] - maxBuckets[bucket] == K + 1: return i + 1 return -1
原文:https://www.cnblogs.com/lautsie/p/12242649.html