/**
* 题目:扑克牌顺子(Java实现)。随机从中抽出了5张牌,决定大\小 王可以看成任何数字,并且A看作10,J为11,Q为12,K为13。
* 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。
* 思考:剑指offer
* 提取主要信息,顺子必须满足如下条件:
* 1)输入数据个数为5;
* 2)输入数据都在0~13之间;
* 3)没有相同的数字;
* 4)最大值与最小值的差值不大于5。
* @author hexiaoli
*/
public class Main {
public static boolean isContinuous(int[] numbers) {
//边界
if(numbers==null||numbers.length!=5) {
return false;
}
// 只有14种牌
int[] cards = new int[14];
// 大小王可以重复
cards[0] = -5;
int max = -1;
int min = 14;
for (int i : numbers) {
cards[i]++;
if (i == 0) {
continue;
}
// 没有相同数字
if (cards[i] > 1) {
return false;
}
if (i > max) {
max = i;
}
if (i < min) {
min = i;
}
}
// 最大值与最小值的差值不大于5
return max - min < 5;
}
public static void main(String[] args) {
int[] test1 = null;
System.out.println(isContinuous(test1));
int[] test2 = new int[] {1,2,3,4};
System.out.println(isContinuous(test2));
//最后一位换成4或10
int[] test3 = new int[] {1,2,3,4,4};
System.out.println(isContinuous(test3));
int[] test4 = new int[] {1,2,3,4,5};
System.out.println(isContinuous(test4));
}
}