算法1
由于0是万能的,只要排除存在对子,以及最大最小值之差 <= 4,那么一定能凑成顺子
java 代码
class Solution {
public static boolean isContinuous(int[] numbers) {
if (numbers == null || numbers.length != 5)
return false; //输入非法返回false
int min = Integer.MAX_VALUE; //初始化最小值为一个很大的值,便于与数组中的每一个数做比较
List<Integer> list = new ArrayList<>();
for (int number : numbers)
list.add(number); //将数组转移到集合中,便于利用它的sort方法
Collections.sort(list); //从小到大排列
for (int i = 0; i < 5; i++) { //循环目的有两个:看是否有对子;找最大最小值
if (list.get(i) != 0) { //0是万能的,将它排除在外
if (i <= 3 && list.get(i).equals(list.get(i + 1)))
return false; //存在对子,不可能是顺子,直接返回false
if (list.get(i) < min) min = list.get(i); //求非0最小值
}
} //走到循环结束说明不存在对子了,只需要比较最大最小值即可
return (list.get(4) - min) <= 4; //最大值最小值的差<=4,那么一定可以用0补齐
} //由于0最多只有四个,所以max就是sort后的最后一个数
}