public boolean isContinuous(int [] numbers) { if(numbers.length==0) return false; ArrayList<Integer> list = new ArrayList<>(); int zeroCount =0; for(int i=0;i<numbers.length;i++){ if(numbers[i]==0){ //计算0的个数 zeroCount++; //零不加入list continue; } list.add(numbers[i]); } //投机取巧借用工具类排序,排好序一切都简单了 Collections.sort(list); for(int j=0;j<list.size()-1;j++){ //计算间隔需要补充的0个数 int temp = Math.abs(list.get(j)-list.get(j+1))-1; //0不够用了 if(temp>zeroCount) return false; //有相同元素,不可能是顺子 if(temp<0) return false; zeroCount-=temp; } //上述for循环执行顺利表示,可以组成顺子 return true; }