import java.util.Arrays;
/*
* 从扑克牌中随机取5张,判断是不是一个顺子
* 其中A看成1,J,Q,K分别看成11,12,13,大小王可以看成0
* 也就是说输入的5个数字范围是0-13,其中0可以任意变换填充空缺。
*/
public class IsContinuous {
public boolean isContinuous(int [] numbers) {
if(numbers.length == 0) return false;
//排序
Arrays.sort(numbers);
//判断0的个数
int count = 0;
for(int i = 0;i < numbers.length; i++) {
if(numbers[i] == 0) {
count ++;
}
}
//去除0
int numbers2[] = new int[numbers.length - count];
int index = 0;
for(int i = 0;i < numbers.length; i ++) {
if(numbers[i] != 0) {
numbers2[index ++] = numbers[i];
}
}
//判断是否含有对子(去除0)
for(int i = 0;i < numbers2.length - 1; i++) {
if(numbers2[i] == numbers2[i + 1]) {
return false;
}
}
//判断空缺个数(去除0),看需要几个0去填补
int number_vacant = 0;
for(int i = 0;i < numbers2.length - 1; i++) {
number_vacant = number_vacant +
(numbers2[i + 1] - numbers2[i] - 1);
}
if(count < number_vacant) return false;
else return true;
}
public static void main(String[] args) {
int[] numbers = {1,2,4,5,6};
System.out.println(new IsContinuous().isContinuous(numbers));
}
}
《剑指offer》-从扑克牌中随机取5张,判断是不是一个顺子
最新推荐文章于 2024-04-24 21:04:37 发布