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]