剑指61:扑克牌顺子

题目描述:

    从扑克牌中抽5张,判定是否连续,其中大小王为0,A为1,JQK分别为11-13.

思路:

    对输入的数组进行升序排列,计算0的个数和非零数间的间隔之和

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        if(numbers.empty()||numbers.size()!=5)
            return false;
        sort(numbers.begin(),numbers.end()); //从小到大
        int countzero = 0;
        for(int i=0;i<numbers.size();i++){
            if(numbers[i]==0)
                countzero++;
        }
        int countgap = 0;
        int start = countzero;
        int next = start + 1;
        if(next==numbers.size()) 
            return true;
        while(next<numbers.size()){
            if(numbers[start]==numbers[next])
                return false;
            countgap += numbers[next++]-numbers[start++]-1;
        }
        if(countgap == countzero)
            return true;
        return false;
    }
};

猜你喜欢

转载自blog.csdn.net/yanbao4070/article/details/80282497