Thursday, December 6, 2018

846. Hand of Straights


Version #1 TreeMap
Space O(n)
Time O(nlogn)

61.52 %
import java.util.NavigableMap;

class Solution {
    public boolean isNStraightHand(int[] hand, int W) {
if (hand == null || hand.length == 0 || W <= 0 || hand.length % W != 0) {
return false;
}
// key-card, value-count of card
NavigableMap<Integer, Integer> map = new TreeMap<>();
for (int card : hand) {
map.put(card, 1 + map.getOrDefault(card, 0));
}
while (!map.isEmpty()) {
int curr = map.firstKey();
for (int i = 0; i < W; i++) {
if (!map.containsKey(curr + i)) {
return false;
}
int count = map.get(curr + i) - 1;
if (count == 0) {
map.remove(curr + i);
} else {
map.put(curr + i, count);
}
}
}
return true;
}
}

No comments:

Post a Comment