import java.util.Arrays;
//面试题61:扑克牌的顺子
//题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
//2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。
public class ContinousCards {
public boolean IsContinuous(int[] numbers) {
if(numbers==null||numbers.length<1)return false;
int length=numbers.length;
//首先排序
Arrays.sort(numbers);
int numbersOfZero=0;
int numbersOfGrap=0;
//其次统计0的个数
for(int i=0;i<length;i++) {
if(numbers[i]==0) {
numbersOfZero++;
}
}
//统计相邻数字之间的空缺数
int small=numbersOfZero;
int big=small+1;
while(big<length){
if(numbers[small]==numbers[big])return false;//存在对子返回false
numbersOfGrap+=numbers[big]-numbers[small];//累积空缺总数
small=big;
big++;
}
return (numbersOfZero<=numbersOfZero)?true:false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ContinousCards c=new ContinousCards();
int[] numbers= {0,1,3,4,5};
boolean result=c.IsContinuous(numbers);
System.out.println("numbers"+Arrays.toString(numbers)+"result:"+result);
int[] numbers1= {0,0,0,0,0};
boolean result1=c.IsContinuous(numbers1);
System.out.println("numbers1"+Arrays.toString(numbers1)+"result1:"+result1);
int[] numbers2= {0};
boolean result2=c.IsContinuous(numbers2);
System.out.println("numbers2"+Arrays.toString(numbers2)+"result2:"+result2);
}
}
面试题61:扑克牌的顺子
最新推荐文章于 2021-08-31 21:32:36 发布