题目描述
现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。
有如下规则:
1. A为1,J为11,Q为12,K为13,A不能视为14
2. 大、小王为 0,0可以看作任意牌
3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
例如:给出数据[6,0,2,0,4]
中间的两个0一个看作3,一个看作5 。即:[6,3,2,5,4]
这样这五张牌在[2,6]区间连续,输出true
数据保证每组5个数字,每组最多含有4个零,数组的数取值为 [0, 13]
示例
输入
[6,0,2,0,4]
返回值
true
输入
[0,3,2,6,4]
返回值
true
输入
[1,0,0,1,0]
返回值
false
输入
[13,12,11,0,1]
返回值
false
思路
必须满足两个条件
1. 除0外没有重复的数
2. max - min < 5
代码
function IsContinuous(numbers)
{
// write code here
if(numbers.length===0){
return false;
}
for(let i=0;i<numbers.length-1 ;i++){
for(let j=0;j<numbers.length-1-i;j++){
let temp=numbers[j+1];
if(numbers[j]>numbers[j+1]){
numbers[j+1]=numbers[j];
numbers[j]=temp
}
}
}
numbers = numbers.filter(n => n!=0);
for(let i=0;i<numbers.length;i++){
//如果抽取数字中有重复,则不能组成顺子
if(numbers.indexOf(numbers[i])!=i){
return false
}
}
if(numbers.length===1){
return true;
}else if((numbers[numbers.length-1]-numbers[0])>=5){
return false;
}
else{
return true
}
}
运行环境:Javascript_V8
运行时间:10ms
占用内存:5336KB