解题思路
1、用变量存储0的的个数、最大值、最小值。如果有4个0的情况下,则最大值和最小值为非0的那个元素。
2、用set集合装不是0的元素,作用是去重。
3、在没有王的情况下,如果set集合的长度小于5,返回false,如果最大值-最小值等于4,返回true。
4、在有王的情况下,然后set集合的长度+王(0的个数)等于5的情况下,最大值-最小值 小于等于4,返回true,否则返回false。
public static boolean isContinuous(Integer [] numbers) {
int count=0;//统计0的个数
int min = numbers[0];
int max = numbers[0];
HashSet<Integer> set = new HashSet();
for (int i = 0; i < numbers.length; i++) {
if(numbers[i]==0) count++;
else{
if( min == 0 || numbers[i]<min && numbers[i] !=0 ) min = numbers[i];
if(numbers[i]>max) max = numbers[i];
set.add(numbers[i]);
}
}
System.out.println(count+","+max+","+min+","+set.size());
if(count == 0){
if(set.size()<5) return false;//说明有相同的牌,不能构成顺子
if(max - min == 4) return true;
}else{
if(set.size()+count==5){
if(max -min <=4) return true;
}
}
return false;
}