首先对题目进行一个整体判断,hand.length对groupSize取余,不等于0时返回false,当groupSize等于1时直接返回true。
对hand进行排序,存入hashmap,遍历hand,通过hashmap看数字是否连续出现。每次使用数字后对haspmap中的值减1
public class LC0846 {
public boolean isNStraightHand(int[] hand, int groupSize) {
if(hand.length%groupSize!=0)return false;
if(groupSize==1)return true;
Arrays.sort(hand);
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
for(int i:hand){
map.put(i,map.getOrDefault(i,0)+1);
}
for(int i:hand){
if(!map.containsKey(i))continue;
for(int j=0;j<groupSize;j++){
int num=j+i;
if(map.containsKey(num)){
map.put(num,map.get(num)-1);
}
else return false;
if(map.get(num)==0)map.remove(num);
}
}
return true;
}
}
文章评论