846. Hand of Straights
有一组整数array hand和一个整数groupsize
请问hand里的元素是否能分成数个groups
其中每个group大小为groupsize
且group中的每个数字是连续的
思路:
先看hand的长度是不是groupsize的倍数
不是的话就可以回传false
用hash table纪录hand每个数字出现的次数
并将hand由小到大排列
接着用两个循环,第一个去遍历hand
第二个去看hand[i]开始有没有groupsize个连续的整数
有的话从hash table扣掉一次,没有就回传fasle
这样就可以找出答案了
也可以用heap
golang code:
func isNStraightHand(hand []int, groupSize int) bool {
n := len(hand)
if n%groupSize != 0 {
return false
}
slices.Sort(hand)
rec := make(map[int]int)
for _, val := range hand {
rec[val]++
}
for _, val := range hand {
if rec[val] > 0 {
for i := 0; i < groupSize; i++ {
rec[val+i]