描述
现在有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]
示例1
输入:
[6,0,2,0,4]
返回值:
true
示例2
输入:
[0,3,2,6,4]
返回值:
true
示例3
输入:
[1,0,0,1,0]
返回值:
false
示例4
输入:
[13,12,11,0,1]
返回值:
false
解题思路
嘻嘻,这道题完全自己写出来的哦~,棒棒~!(这意味着我又不太想看别人的解法了。。。这样不好)
这道题我的思路是酱紫的
因为只能抽出五个数字,而且五个数字必须是连续的
那么这连续的五个数字之间的差最大不能超过4
因为超过4的话,就证明一定有个数字不连续
所以:
第一步:将输入数组排序
第二步:判断除0之外的数字之差是不是均小于4
第三步:判断除0之外的数字有没有相同的数字,因为连续的数字不能有相同的数字
代码:
import java.util.*;
public class Solution {
public boolean IsContinuous(int [] numbers) {
Arrays.sort(numbers);
for(int i=0;i<numbers.length;i++){
if(numbers[i]!=0){
for(int j = i+1;j<numbers.length;j++){
if(Math.abs(numbers[i]-numbers[j])>4){
return false;
}else if(numbers[i]==numbers[j]){
return false;
}
}
}
}
return true;
}
}
Arrays.sort()函数和Math.abs()我用的是越来越顺手了嘻嘻~