题目源自剑指offer:输入一个数组,检查是否是顺子,返回值类型boolean。(大小王各两张,可以代表任意数字,方便起见记为0)
答案解析来自:Xy。
需要满足条件:
1. 除0外没有重复的数
2. max - min < 5
public class Solution {
public boolean isContinuous(int [] numbers) {
if(numbers.length!=5)return false;
int min = 14;
int max = -1;
int flag = 0;
for(int i= 0;i<5;i++){
int number = numbers[i];
if(number<0||number>13)return false;
if(number==0) continue;
if(((flag >> number) & 1) == 1) return false;//用二进制来判断是否有重复
flag |= (1 << number);
if(number>max) max=number;
if(number<min) min=number;
if(max-min>=5)return false;
}
return true;
}
}