解題思路:
(1)因爲四個王,13個數,所以如果超過了17個數,肯定不能組成順子
(2)先排序,計算開頭0的個數,超過了4個0,返回false
(3)接下里判斷每個數是否屬於1~13,超出範圍,返回false
(4)判斷相鄰是否間隔1,是則繼續判斷下一對數,否則兩者相等,返回false
(5)如果兩者大於等於2,用0的個數來填補,如果出現了0的個數爲負,返回false
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.size()==0 || numbers.size()>17) return false;
sort(numbers.begin(),numbers.end());
int count = 0,i = 0;
while(i<numbers.size()&&numbers[i]==0) {
count++;
i++;
}
if(count>4) return false;
while(i<numbers.size()-1) {
if(1<=numbers[i] && numbers[i]<=13 && 1<=numbers[i+1] && numbers[i+1]<=13) {
if(numbers[i+1]-numbers[i]==1)i++;
else if(numbers[i+1]-numbers[i]==0) return false;
else {
count = count - (numbers[i+1]-numbers[i]-1);
if(count<0) return false;
else i++;
}
} else return false;
}
return true;
}
};