Nowcoder java-扑克牌顺子
(题目来自牛客网)
思路
1、排序
2、计算0的个数
3、计算所有相邻数字间隔总数
4、如果出现对子,则不是顺子
5、如果numOfZero大于等于numOfInterval就是顺子
代码
import java.util.Arrays;
public class IsContinuous {
public boolean isContinuous(int[] numbers) {
//1、排序
//2、计算0的个数
//3、计算所有相邻数字间隔总数
//4、如果出现对子,则不是顺子
//5、如果numOfZero大于等于numOfInterval就是顺子
if (numbers == null || numbers.length < 5) {
return false;
}
int numOfZero = 0;
int numOfInterval = 0;
Arrays.sort(numbers);//1、排序
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == 0) {//2、计算0的个数
numOfZero++;
continue;
}
if (i < numbers.length - 1) {
if (numbers[i] == numbers[i + 1]) {//4、如果出现对子,则不是顺子
return false;
}
numOfInterval += numbers[i + 1] - numbers[i] - 1;//3、计算所有相邻数字间隔总数
}
}
if (numOfZero < numOfInterval) {//5、如果numOfZero大于等于numOfInterval就是顺子
return false;
}
return true;
}
public static void main(String[] args) {
int[] numbers = {0, 1, 3, 4, 0};
System.out.println(new IsContinuous().isContinuous(numbers));
}
}