zoukankan      html  css  js  c++  java
  • 剑指OFFER_扑克牌中的顺子

    剑指OFFER_扑克牌中的顺子

    题目

    从扑克牌中随机抽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] .

    思路

    我首先将数组排序,然后遍历此数组,如果当前数字是0,计算数字为0的个数。如果不是0,就计算前后的数字的差值;

    因为数组完成了排序,所以此差值不会为负数,那么用此差值减去0的个数,表示0的个数是否能填充此差值,如果0的个数为负数,则表示不能填充了,返回false;其余情况下为true;

    代码

    class Solution {
    public:
        bool isStraight(vector<int>& nums) {
            sort(nums.begin(), nums.end());
    
            int zeroNums = 0, pre = 0;
            for (int &x:nums) {
                if (x == 0) {
                    ++zeroNums;
                } else if (pre != 0) {
                    int gap = x-pre-1;
                    if (gap == -1) return false;
                    zeroNums = zeroNums-gap;
                    if (zeroNums < 0) {
                        return false;
                    }
                }
                pre = x;
            }
            return true;
        }
    };
    
  • 相关阅读:
    跟我一起玩Win32开发(转自CSDN-东邪独孤)
    c指针讲解
    9×9扫雷游戏代码-C写的
    Winform GDI+ 相关资料
    hadoop datanode 和namenode之间的心跳
    打包 压缩 命令tar zip
    kudu 问题集
    配置NTP服务ntpd/ntp.conf
    kudu 1.8.0(开发版) 源码安装
    hue 集成spark+livy
  • 原文地址:https://www.cnblogs.com/sakurapiggy/p/13357378.html
Copyright © 2011-2022 走看看