题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
利用0的个数来解决这个问题:
在对数组进行排序后,在数字不连续时:当相差的值大于等于2时,需要消耗多个0来填充中间的空缺,所以扣掉相应的0,循环继续。若需要的0比拥有的多,则返回失败。
import java.util.*;
public class Solution {
public boolean IsContinuous(int [] numbers) {
ArrayList<Integer> num = new ArrayList<>();
for(int i=0;i<numbers.length;i++){
num.add(numbers[i]);
}
Collections.sort(num);
int zero = 0;
while(num.contains(0)){
num.remove(0);
zero++;
}
for(int i=0;i<num.size()-1;i++){
if(num.get(i)+1!=num.get(i+1)){
if(num.get(i+1)-num.get(i)>=2){
if(num.get(i+1)-num.get(i)-1<=zero){
zero = zero - num.get(i+1) + num.get(i)+1;
}else{
return false;
}
}else{
return false;
}
if(zero<0) return false;
}
}
return true;
}
}