能组成顺子需要满足的两个条件是:
-
除了0以外不能出现两个相同的数字;
-
排序后两个相邻数字的差值不能大于0的个数。
题目描述
blablabla
样例
blablabla
算法
blablabla
时间复杂度分析:blablabla
Java 代码
public boolean isContinuous(int[] numbers) {
if (numbers.length < 5)
return false;
Arrays.sort(numbers);
int tmp = -1;
int zero = 0;
for (int i = 0; i < numbers.length; i++) {
//求0的个数
if (numbers[i] == 0) {
zero++;
continue;
}
//记录第一个非0的数
if (tmp == -1) {
tmp = numbers[i];
continue;
}
//相差1说明是正常的递增序列
if (numbers[i] - tmp == 1) {
tmp = numbers[i];
continue;
} else if (numbers[i] - tmp - 1 > zero) {//二者之差大于0的个数
return false;
} else if (numbers[i] == tmp) {//有两个数相等
return false;
} else {//更新0的个数
zero = zero - (numbers[i] - tmp - 1);
tmp = numbers[i];
}
}
return true;
}