846. 一手顺子
Alice 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌数都是 groupSize ,并且由 groupSize 张连续的牌组成。
给你一个整数数组 hand 其中 hand[i] 是写在第 i 张牌,和一个整数 groupSize 。如果她可能重新排列这些牌,返回 true ;否则,返回 false 。
示例 1:
1 | 输入:hand = [1,2,3,6,2,3,4,7,8], groupSize = 3 |
示例 2:
1 | 输入:hand = [1,2,3,4,5], groupSize = 4 |
提示:
1 <= hand.length <= 1040 <= hand[i] <= 1091 <= groupSize <= hand.length
算法思想:
- 如果数组长度不能被顺子长度等分,则直接不符合
- 然后将数组进行从小到大排序
- 将数组元素存入哈希表并记录出现次数
- 每次取出最小元素x当做顺子的头,然后在哈希表中读取当前顺子的其余元素
- 如果可以满足要求,则当前顺子的其余元素在哈希表中的值都必须大于等于1
- 如果值小于1则不满足
代码实现:
1 | public boolean isNStraightHand(int[] hand, int groupSize) { |

