1、抽取的数组个数必须是5个,如果数组个数达不到要求:false!
2、利用Arrays对数组排序以后,就好办了,所以对于sort函数不能陌生。
3、数组中有重复的:false,这里利用了桶计数的方法
4、数组排序后,相邻数之间的差值大于了0的个数,那这个数组就没法凑成顺子了:false
5、0的个数就是4个,多了也不对:false。
剩下的就是对的了
import java.lang.*; import java.util.*; public class Solution { public boolean IsContinuous(int [] numbers) { int len = numbers.length; if(len != 5) return false; int count_zero = 0; int gap = 0; int[] cur = new int[14]; Arrays.sort(numbers); for(int i = 0;i < len ;i++){ if(numbers[i] == 0){ count_zero++; }else{ if(cur[numbers[i]] != 0){ return false; }//有重复的牌就不是顺子 cur[numbers[i]] = 1; if( i!= 0 && numbers[i-1] != 0){ gap += numbers[i] - numbers[i-1] - 1; } } } if(count_zero == 5 || count_zero < gap) return false;//王的个数补不上牌与牌之间的差值 return true; } }