写在前面:
注意:题目规定了,大小王看作是0.
题目的关键点在于:
(1)记录手中扑克牌大小王(也就是0)的数量
(2)记录手中扑克牌中,相邻两张牌的间隔,如果间隔>大小王的数量,则直接return false.
(3)记录手中扑克牌是否有对(即是否有相同的牌),如果有对,则直接return false.
代码实现:
package test7;
import java.util.Arrays;
public class Solution2 {
public boolean isContinuous(int[] numbers) {
if (numbers.length == 0) {
return false;
}
int numOfZero = 0;// 记录0的数量,即大小王
int numOfInterval = 0;// 记录相邻两张牌的间隙
Arrays.sort(numbers);// 对手中的牌按大小排序
for (int i = 0; i < numbers.length - 1; i++) {
if (numbers[i] == 0) {
numOfZero++;
continue;
}
if (numbers[i] == numbers[i + 1]) {
// 如果有对,直接返回false
return false;
}
// 记录总间隔
numOfInterval += (numbers[i + 1] - numbers[i] - 1);
}
if (numOfZero >= numOfInterval) {
return true;
}
return false;
}
}