【LeetCode刷题(简单程度)】剑指 Offer 61. 扑克牌中的顺子

it2025-02-14  5

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

示例 1:

输入: [1,2,3,4,5] 输出: True

示例 2:

输入: [0,0,1,2,5] 输出: True

限制:

数组长度为 5

数组的数取值为 [0, 13] .

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:先计算出0(癞子)的个数,然后看我们需要填补的排的数量和癞子的数量的差就行。

class Solution { public: bool isStraight(vector<int>& nums) { sort(nums.begin(),nums.end()); int num_of_zero = 0; int num_of_gap = 0; for(int i = 0;i < nums.size();++i) { if(nums[i] == 0) ++num_of_zero; } for(int i = num_of_zero;i < nums.size() - 1;++i) { if(nums[i + 1] == nums[i]) return false; else if(nums[i + 1]>nums[i] + 1) num_of_gap += nums[i + 1] - nums[i] - 1; } return num_of_gap <= num_of_zero; } };
最新回复(0)