题目链接
思路分析
- 先对满足顺子的情况进行分析,我们先排除大小王,其他的数字能满足顺子,要求:
- 数组中没有相同的数
- 由于只有5个数,那么最大数减最小数间隔小于5,才能是顺子,为什么不是==4?
- 是为了排除0 0 1 2 3的情况尽管间隔为2 但是依然能满足顺子的情况
综上可述,我们先要对数组进行排序,然后统计第一位不为0的数字,并计算他们差值
代码实现
class Solution {
public:
bool isStraight(vector<int>& nums) {
sort(nums.begin(), nums.end());
int cnt = 0;
//先进行排序 统计大小王数量,
//如果前面的数和后面的数相同,则返回false
//否则最大减最小 < 5 就可满足条件
for(int i = 0; i < nums.size()-1; ++i)
{
if(nums[i] == 0)
{
cnt++;
continue;
}
if(nums[i] == nums[i+1])
return false;
}
return nums[4] - nums[cnt] < 5;
}
};