剑指offer:扑克牌顺子

首先定义个bool型的IsContinuous函数,有个数组型的参数,首先判断数组numbers的长度,小于等于4,返回错。将数组numbers进行从小到大进行排序,定义countZero的大小王数量为0,为了后面更新,index也为0,为了遍历,当索引小于数组的长度,并其中的某位为0时,大小王的数++;索引也++。for循环看i位和i+1位是不是相等,相等就错,elseif里判断相邻的数是不是来连续的,连续则继续,else语句中,计算两个挨着的数之间的差值并减去1,用大小王的总数减去总差值,更新countZero的值,如果为负值返回false,在整个循环后,countZero的值大于等于0,则返回true!!!

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        if(numbers.size()<=4 )return false;
        sort(numbers.begin(),numbers.end());
        int countZero = 0;
        int index = 0;
        while(index<numbers.size()&&numbers[index]==0){
            countZero++;
            index++;
        }
        for(int i = index;i<numbers.size()-1;++i){
            if(numbers[i]==numbers[i+1]) return false;
            else if((numbers[i]+1)==numbers[i+1]){continue;}
            else{countZero-=(numbers[i+1]-numbers[i]-1);

            }
            if(countZero<0) return false;
        }
        return countZero>=0;

    }
};

#剑指offer##23届找工作求助阵地#
全部评论

相关推荐

头像
昨天 15:46
已编辑
中南大学 后端
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务