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'shandcan 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'shandcan't be rearranged into groups of4.
Note:
1 <= hand.length <= 100000 <= hand[i] <= 10^91 <= 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