题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
- 排序
- 统计0的个数;
1)0的个数为5,直接返回false; - 统计非0值的之间的空缺数量;
1)若有两个非0值相等,返回false; - 若0的数量大于空缺数量,返回true;
import java.util.*; public class Solution { public boolean IsContinuous(int [] numbers) { sort(numbers);//对numbers进行排序(插入排序) int zero=0;//0的个数 int dis=0;//空缺数量 //统计0的个数 while(numbers[zero]==0){ zero++; } //若0的个数为5,直接返回false; if(zero==5){ return false; } //统计空缺的数量 for(int i=zero+1;i<numbers.length;i++){ //如果有两个相等的非0值,返回false if(numbers[i]==numbers[i-1]){ return false; }else{ dis+=numbers[i]-numbers[i-1]-1; } } return zero>=dis;//若0的数量大于空缺数量,返回true; } //插入排序 public void sort(int[] numbers){ for(int i=1;i<numbers.length;i++){ int temp=numbers[i]; int index=i; while(index>0 && temp<numbers[index-1]){ numbers[index]=numbers[index-1]; index--; } numbers[index]=temp; } } }