步骤:①给数组中的元素排序;②统计数组中0的个数;③统计除0之外其他元素的间隔数(排除对子,除0之外其他元素若有相等元素则说明是对子不可能构成顺子);④(看0够不够用)如果间隔数<=0说明大小王够充当其他数可以构成顺子,否则不行。
Java代码:
import java.util.Arrays; public class Solution { public boolean isContinuous(int [] numbers) { if(numbers==null||numbers.length<1){ return false; } Arrays.sort(numbers); int numberOfZero=0; int numberOfGap=0; //统计数组中0的个数 for(int num:numbers){ if(num==0) numberOfZero++; } //统计数组中的间隔数目 int small=numberOfZero; int big=numberOfZero+1; while(big<numbers.length){ if(numbers[small]==numbers[big]){//有对子不可能为顺子 return false; } numberOfGap+=numbers[big]-numbers[small]-1; small++; big++; } return numberOfGap<=numberOfZero?true:false; } }