剑指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届找工作求助阵地#
全部评论

相关推荐

notbeentak...:孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞 评论 收藏
分享
野猪不是猪🐗:还是太卑微了,什么叫放弃本次面试应该说经过评估,贵公司与自己不匹配,决定不再推进后续流程
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务