扑克问题
1 ,大小王是 0 即可看作是任意的数字 先统计0的个数
2,如果有两张一样的牌,一样的数字形成对(不是0)那就不可能是顺子
3,判断相邻两张扑克的差值 如果大于零的个数 则不可能用0补全成为顺子 01456 1与4相差2 但是只有一个0就没法补全
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
int len=numbers.size();
if(len<5) return false;
int num_of_zero=0;//0的个数
int num_of_gap=0;//差值统计
int start=0;
sort(numbers.begin(),numbers.end());//先排序 方便计算
while(numbers[start]==0)
{
num_of_zero++;
start++;
}//统计0的个数 顺便start到了第一个不为0的位置
int end=start+1;//end在start后面
while(end<len)
{
if(numbers[start]==numbers[end]) return false;//要是有一样的就返回 false
num_of_gap+=numbers[end]-numbers[start]-1;
start=end;//
end++;//这两行是向后移动的代码
}
return num_of_gap > num_of_zero ?false:true;
}
};