题目描述:
从扑克牌中抽5张,判定是否连续,其中大小王为0,A为1,JQK分别为11-13.
思路:
对输入的数组进行升序排列,计算0的个数和非零数间的间隔之和
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.empty()||numbers.size()!=5)
return false;
sort(numbers.begin(),numbers.end()); //从小到大
int countzero = 0;
for(int i=0;i<numbers.size();i++){
if(numbers[i]==0)
countzero++;
}
int countgap = 0;
int start = countzero;
int next = start + 1;
if(next==numbers.size())
return true;
while(next<numbers.size()){
if(numbers[start]==numbers[next])
return false;
countgap += numbers[next++]-numbers[start++]-1;
}
if(countgap == countzero)
return true;
return false;
}
};