[题解]剑指 Offer 61. 扑克牌中的顺子(C++)

题目

从扑克牌中随机抽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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

要凑成顺子,就是说5张牌不能重复而且刚好是连续的5张,另外大小王可以看作任意数字。首先对数组进行排序,然后遍历数组,如果有重复数字(nums[i] == nums[i - 1], i > 0)直接返回false;记大小王数量king,将其与其他牌之间的空隙值gap进行比较,如果能够填充就返回true,否则返回false。
时间复杂度O(n*log(n)),空间复杂度O(log(n))。

代码

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int king = 0;
        int gap = 0;
        for(int i = 0; i < nums.size(); ++i)
        {
            if(nums[i] == 0) ++king;
            if(i > 0 && nums[i] != 0 && nums[i] == nums[i - 1]) return false;
            if(i > 0 && nums[i - 1] != 0 && nums[i] > nums[i - 1] + 1)
            {
                gap += nums[i] - nums[i - 1] - 1;
            }
        }
        return king >= gap;
    }
};

思路2

比较gap其实可以从另一个角度出发,只要没有重复且非大小王的牌中最大的牌max和最小的牌min满足max - min < 5,就能凑成对子。

代码

class Solution {
public:
    bool isStraight(vector<int>& nums) {
        sort(nums.begin(), nums.end());
        int king = 0;
        for(int i = 0; i < nums.size(); ++i)
        {
            if(nums[i] == 0) ++king;
            else if(i > 0 && nums[i] != 0 && nums[i] == nums[i - 1]) return false;
        }
        return nums[4] - nums[king] < 5;
    }
};
posted @   浮生的刹那  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
  1. 1 Night City r e l,Artemis Delta
  2. 2 Gold Steps(人生何处不青山) Neck Deep
  3. 3 Devil Trigger Ali Edwards
  4. 4 Hopeless Case Roam
  5. 5 On My Own Blitz Kids
  6. 6 I Really Want to Stay At Your House Rosa Walton & Hallie Coggins
  7. 7 Major Crimes Health & Window Weather
Night City - r e l,Artemis Delta
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.
点击右上角即可分享
微信分享提示