题解 | #扑克牌顺子#

扑克牌顺子

http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        map<int, int>hashMap;//key的含义为数组的值,value的含义为出现的次数
        int max=-1,min=2147483647;
        int count=0;//记录五个数里面0出现的次数
        for(int i=0;i<numbers.size();i++){
            if(numbers[i]!=0&&hashMap.find(numbers[i])!=hashMap.end())
                return false;//某个数重复出现的话肯定不可能组成顺子
            else if(numbers[i]==0)
                count++;
            else {
                hashMap[numbers[i]]++;
                max=max>numbers[i]?max:numbers[i];//找到五个数里面的最大值最小值
                min=min<numbers[i]?min:numbers[i];
            }
        }
        if(count==4)
            return true;
        if(max-min+1==5)
            return true;
        else if(max-min+1>5)
            return false;
        else{
            if(max+count-min+1>=5)
                return true;
            else return false;
        }
    }
};
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务