846. Hand of Straights
Read the full problem statement on LeetCode.
Difficulty: medium Acceptance: 57% Topics: Array, Hash Table, Greedy, Sorting
View full problem on LeetCode Reading material
Reference solution (spoiler · python)
# 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
Solution from kamyu104/LeetCode-Solutions · MIT