剑指 Offer 61. 扑克牌中的顺子(简单)

发布时间 2023-08-27 20:45:33作者: 孜孜不倦fly

题目:

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        sort(nums.begin(), nums.end());      //首先要对数组进行排序
        int count=0;      //count用来记录万能牌0的个数,count相当于用来补牌
        for(auto n:nums){
            if(n==0) count++;
        }
        for(int i=count+1;i<5;i++){      //从第二个非零的数开始遍历
            if(nums[i]==nums[i-1]) return false;      //若当前数等于前一个数,返回false
            if(nums[i]-nums[i-1]-1>count) return false;      //若当前数与前一个数之间缺失的牌数(nums[i]-nums[i-1]-1)大于count,返回false
            count = count - (nums[i]-nums[i-1]-1);      //count减去被拿去补充的牌数
        }
        return true;
    }
};