(C++)剑指offer-45:扑克牌顺子
模拟所有顺子可以成立的前提条件为:除了0以外不能出现两个相同的数字;排序后最大最小数字的差值不能大于4。时间复杂度为O(n),具体代码如下:
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
if(numbers.empty()) return false;
sort(numbers.begin(), numbers.end());
int k = 0;
while(!numbers[k]) k++;
for(int i = k + 1; i < numbers.size(); i++){
if(numbers[i] == numbers[i - 1])
return false;
}
return numbers.back() - numbers[k] <= 4; //opps
}
};