Hand of Straights
Description
Alice has a hand
of cards, given as an array of integers.
Now she wants to rearrange the cards into groups so that each group is size W
, and consists of W
consecutive cards.
Return true
if and only if she can.
Example 1:
Input: hand = [1,2,3,6,2,3,4,7,8], W = 3 Output: true Explanation: Alice'shand
can be rearranged as[1,2,3],[2,3,4],[6,7,8]
.
Example 2:
Input: hand = [1,2,3,4,5], W = 4 Output: false Explanation: Alice'shand
can't be rearranged into groups of4
.
Constraints:
1 <= hand.length <= 10000
0 <= hand[i] <= 10^9
1 <= W <= hand.length
Solution(javascript)
/**
* @param {number[]} hand
* @param {number} W
* @return {boolean}
*/
var isNStraightHand = function(hand, W) {
const map = hand.reduce((acc, num) => {
acc[num] = (acc[num] || 0) + 1
return acc
}, {})
hand.sort((a, b) => a - b)
for(let num of hand) {
if(map[num] > 0) {
for(let i = 0; i < W; i++) {
if(map[num+i] > 0) {
map[num+i] -= 1
} else {
return false
}
}
}
}
return true
};