846. Hand of Straights
Medium
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Solution { public boolean isNStraightHand(int[] hand, int W) { Map<Integer, Integer> count = new TreeMap<>(); for(int i : hand) count.put(i, count.getOrDefault(i, 0)+1); for(int k : count.keySet()){ if(count.get(k)==0) continue; int last = k + W-1; for(int j=last; j>=k; --j){ if(count.getOrDefault(j, 0) < count.get(k)) return false; count.put(j, count.get(j)-count.get(k)); } } return true; } } |
No comments:
Post a Comment