题目:输入5个数,判断是否连续,0可以替代任何数。
思路:
代码:
public boolean isContinuous(int[] numbers) {
if (numbers == null || numbers.length != 5) {
return false;
}
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i : numbers) {
list.add(i);
}
Collections.sort(list);
int numOf0 = 0;
int sumOfNull = 0;
// 统计0的个数
for (Integer i : list) {
if (i == 0) {
numOf0++;
}
}
int left = numOf0;
int right = left + 1;
// 统计间隔的个数
while (right < 5) {
int tmp = list.get(right) - list.get(left);
// 如果两个相邻的数相等,那么就没有顺子
if (tmp == 0) {
return false;
}
sumOfNull += tmp - 1;
left++;
right++;
}
return numOf0 >= sumOfNull ? true : false;
}

本文介绍了一个算法问题的解决方法:如何判断五张扑克牌中是否存在顺子,其中0可以作为任意数替代。通过排序和计算间隔,算法能够有效判断是否构成顺子。
1813

被折叠的 条评论
为什么被折叠?



