作者JIWP (神楽めあ的錢包)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Thu Jun 6 20:44:24 2024
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]--
if rec[val+i] < 0 {
return false
}
}
}
}
return true
}
--
https://i.imgur.com/r9FBAGO.gif
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.133.45 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1717677867.A.3DE.html
推 sustainer123: 大師 06/06 20:52
推 DJYOSHITAKA: 別捲了 06/06 20:53
推 SecondRun: 別捲了 06/06 20:57