扑克牌顺子思路:
首先对数组进行排序,找到其第一个不为0的下标i,判断如果此下标大于等于数组尾下标,说明数组一定可以成为顺子;
其次,计算最大值和不为0的最小值中间需要的数个数和当前已经有的个数的差值,如果这个数是小于等于i的,那么0的个数足够将数组变为顺子,否则不行。
即(numbers[numbers.size()-1]-numbers[i]-1)-(numbers.size()-1-i-1)<=i
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
//auto f=find(numbers.begin(),numbers.end(),
sort(numbers.begin(),numbers.end());
int i=0;
while(numbers[i]==0)
i++;
if(i>=numbers.size()-1)
return true;
if((numbers[numbers.size()-1]-numbers[i]-1)-(numbers.size()-1-i-1)<=i)
return true;
else
return false;
}
};
京公网安备 11010502036488号