LeetCode 面试题61 扑克牌中的顺子

题目描述:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。

思路:
首先统计数组中0的个数(因为大小王可以代替任意扑克牌)
然后再统计不连续扑克牌,需要的数量
进行比较即可

代码如下:

class Solution {
     
public:
    bool isStraight(vector<int>& nums) {
     
        sort(nums.begin(),nums.end());
        int cnt=0;
        for(int i=0;i<5;i++){
     
            if(nums[i]==0)
            cnt++;
            else break;
        }
        int temp=0;
        for(int i=1;i<5;i++){
     
            if(nums[i]-nums[i-1]>=2&&nums[i]!=0&&nums[i-1]!=0)
            temp+=nums[i]-nums[i-1]-1;
            else if(nums[i]==nums[i-1]&&nums[i]!=0&&nums[i-1]!=0)
            return false;
        }
        if(temp>cnt)
        return false;
        return true;
    }
};

你可能感兴趣的:(leetcode,算法,leetcode,数据结构,c++)