题解 | #扑克牌顺子#
扑克牌顺子
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;
}
}
}