Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。
给你一个整数数组 hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false 。
示例 1:
输入:hand = [1,2,3,6,2,3,4,7,8], groupSize = 3
输出:true
解释:Alice 手中的牌可以被重新排列为 [1,2,3],[2,3,4],[6,7,8]。
主要就是用了Counter函数
思路就是从最小的顺子开始出
就能够穷尽所有的顺子
class Solution:
def isNStraightHand(self, hand: List[int], groupSize: int) -> bool:
if groupSize < 2:return True
if len(hand)%groupSize > 0:return False
counter = Counter(hand)
for start in sorted((counter.keys())):
c = counter[start]
if c > 0:
for end in range(start,start+groupSize):
if counter[end] < c:
return False
counter[end] -= c
return True