Medium
Hand of Straights — Python
Full explanation · Time O(nlogn) · Space O(n)
# Time: O(nlogn)
# Space: O(n)
from collections import Counter
from heapq import heapify, heappop
class Solution(object):
def isNStraightHand(self, hand, W):
"""
:type hand: List[int]
:type W: int
:rtype: bool
"""
if len(hand) % W:
return False
counts = Counter(hand)
min_heap = list(hand)
heapify(min_heap)
for _ in xrange(len(min_heap)//W):
while counts[min_heap[0]] == 0:
heappop(min_heap)
start = heappop(min_heap)
for _ in xrange(W):
counts[start] -= 1
if counts[start] < 0:
return False
start += 1
return True