面试题44 扑克牌的顺子

题目链接:扑克牌的顺子

思路总结

1.排序
2.统计0个数 为a
3.统计不连续数的差 将其求和为b
4.如果不存在对子,且a=b,则为顺子

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        int length= numbers.size();
        //1.跳出函数
        if(length<1){
            return false;
        }
        //2.排序
        sort(numbers.begin(),numbers.end());
        
        //3.声明变量计算0个数
        int numberOfzero = 0;
        //4.声明变量计算不连续数间隔
        int numberOfgap = 0;
        //5.统计数组中0个数
        for(int i = 0;i<length&&numbers[i]==0;i++){
            ++numberOfzero;
        }
        //6.统计数组中间隔个数
        int small = numberOfzero;
        int big = small+1;
        while(big<length){
            //a.是否有对子
            if(numbers[small] == numbers[big]){
                return false;
            }
            numberOfgap += numbers[big]-numbers[small]-1;
            small = big;
            ++big;
        }
        return (numberOfgap>numberOfzero)?false:true;
    }
    int compare(const void *arg1,const void *arg2){
        return *(int*)arg1-*(int*)arg2;
    }
};
    原文作者:贾雨村甄士隐
    原文地址: https://www.jianshu.com/p/117ead869868#comments
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞