题目:输入一个数组 判断数组中的数字是不是连续的数字,并且 0 可以代表任何数。
解题思路: 先对数组排序,然后判断数组是不是按照+1递增,并且把0可以代替任何数的情况加入到判断中。、
class Solution {
public:
bool IsContinuous( vector<int> numbers ) {
int len=numbers.size();
if(len==0)
return false;
sort(numbers.begin(),numbers.end());
len--;
int zero=0;
int times_zero=0;//零的个数
for(int i=0;i<len;++i)
{
if(numbers[i]==0)
{
times_zero++;
}
else if(numbers[i]==numbers[i+1])//前后两个数相等 肯定不是顺子
return false;
else if(numbers[i]+1!=numbers[i+1] )
{
times_zero-=(numbers[i+1]-numbers[i]-1); //用零替代 任何数 来弥补前后两个数的差值
if(times_zero>=0)//如果零的个数刚刚好够弥补差值 或者 零的个数仍有剩余 可以继续 否则返回 假
{
continue;
}
/*
if(times_zero==0)
return false;
zero=numbers[i]+1;
for(times_zero--;times_zero;times_zero--)
{
if(numbers[i+1]==zero+1)
break;
zero=zero+1;
}
if(numbers[i+1]==zero+1)
continue;;
*/
return false;
}
}
return true;
}
};