题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
public class Solution {
public boolean IsContinuous(int [] numbers) {
ArrayList<Integer> listNotZero = new ArrayList<>();
int zeroNum = 0;
// 把非零 元素拿出来 并统计0的个数
for(int i = 0; i < numbers.length; i++){
if(numbers[i] != 0){
listNotZero.add(numbers[i]);
}
}
zeroNum = numbers.length - listNotZero.size();
// 把非0元素排序
Collections.sort(listNotZero);
// 遍历非零元素, 前后两个元素相差 大于1的,在他们中间用0 补上,同时0的个数减少1
for(int i = 0; i < listNotZero.size() -1; i++){
if(listNotZero.get(i) + 1 != listNotZero.get(i + 1) && zeroNum != 0){
listNotZero.add(i + 1, listNotZero.get(i) + 1);
zeroNum --;
}
}
// 判断是不是连续的数字
boolean isTrue = true;
for(int i = 0; i < listNotZero.size() -1; i++){
if(listNotZero.get(i) + 1 != listNotZero.get(i + 1)){
isTrue = false;
break;
}
}
return isTrue;
}
}