剑指 Offer 61:扑克牌中的顺子

简介: 剑指 Offer 61:扑克牌中的顺子

题目

题目链接

从若干副扑克牌中随机抽 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

解题

方法一:顺序遍历,记录最大值、最小值、set记录重复

参考链接

此题限定是5张牌

判断顺子充分条件:

  • 除大王小王外,所有牌无重复
  • 设此 55 张牌中最大的牌为 max ,最小的牌为 min(大小王除外),则需满足:max-min<5

因此,使用maxNum、minNum分别记录出现最大最小值(大小王除外),用set记录牌是否重复。

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        int maxNum=INT_MIN;
        int minNum=INT_MAX;
        unordered_set<int> set;
        for(int num:nums){
            if(num){
                maxNum=max(maxNum,num);
                minNum=min(minNum,num);
                if(set.count(num)) return false;
                set.insert(num);
            }
        }
        return maxNum-minNum<5;
    }
};
相关文章
|
4月前
剑指 Offer 10- II:青蛙跳台阶问题
剑指 Offer 10- II:青蛙跳台阶问题
42 1
|
4月前
剑指 Offer 14- I:剪绳子
剑指 Offer 14- I:剪绳子
32 0
|
4月前
剑指 Offer 14- II:剪绳子 II
剑指 Offer 14- II:剪绳子 II
28 0
|
4月前
剑指 Offer 49:丑数
剑指 Offer 49:丑数
31 0
|
4月前
|
Java C++ Python
剑指 Offer 58 - II:左旋转字符串
剑指 Offer 58 - II:左旋转字符串
54 0
【剑指offer】-扑克牌顺子-44/67
【剑指offer】-扑克牌顺子-44/67
|
容器
剑指offer 69. 扑克牌的顺子
剑指offer 69. 扑克牌的顺子
84 0
LeetCode剑指 Offer 49. 丑数(dp/打表)
LeetCode剑指 Offer 49. 丑数(dp/打表)
|
C++ 容器
剑指 Offer 58 - II. 左旋转字符串(3种方法)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
60 0