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
.
Note:
1 <= hand.length <= 10000
0 <= hand[i] <= 10^9
1 <= W <= hand.length
暴解
class Solution { public boolean isNStraightHand(int[] hand, int W) { int n = hand.length; Arrays.sort(hand); TreeMap<Integer, Integer> tree = new TreeMap<>(); for (int i : hand) { tree.put(i, tree.getOrDefault(i, 0) + 1); } while (!tree.isEmpty()) { int count = 0, i = tree.firstKey(); while (count < W) { if (!tree.containsKey(i)) return false; tree.put(i, tree.get(i) - 1); if (tree.get(i) == 0) tree.remove(i); i++; count++; } } return true; } }
No comments:
Post a Comment