题目链接:846. 一手顺子
贪心策略,每次从最小的牌开始,看能不能凑出一组,如果不能,那么就不是一手顺子。重复这个过程,直到用光所有手牌,如果能用光,那么就是一手顺子。
from collections import Counter
from typing import List
class Solution:
def isNStraightHand(self, hand: List[int], groupSize: int) -> bool:
if len(hand) % groupSize != 0:
return False
card_counter = Counter(hand)
cards = sorted(card_counter)
while len(cards) > 0:
card, card_count = cards[0], card_counter.get(cards[0])
for i in range(card, card + groupSize):
new_card_count = card_counter.get(i, 0) - card_count
if new_card_count < 0:
return False
elif new_card_count == 0:
cards.remove(i)
card_counter[i] = new_card_count
return True