题解 | #扑克牌顺子#

扑克牌顺子

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

有两张非王牌相同时,一定不能组成顺子,其他情况下,可以先对数据排序(升序),再用后一张牌的值减去前一张牌的值,第一张非零牌的值令为零,这样得到的数据就是每张牌之间差的值,当这个数值小于等于4时即可组成顺子。

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) 
    {
        int n=0;
        sort(numbers.begin(),numbers.end());
        for(int i=0;i<4;i++)//除去有非王重复牌的情况
        {
            if(numbers[i]==numbers[i+1]&&numbers[i]!=0)
                return false;
        }
        
        for(int i=4;i>=0;i--)//把前后牌的差值计算出来并把第一张非零牌的值归零
        {
            if(i!=0)
            {
                numbers[i]=numbers[i]-numbers[i-1];
                if(numbers[i-1]==0)
                    numbers[i]=0;
            }
            else
            {
                numbers[i]=0;
            }
        }
        
        for(int i=0;i<5;i++)//计算差值的总和
        {
            n=n+numbers[i];
        }
        if(n<5)
            return true;
        return false;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
找到实习了&nbsp;给了150一天&nbsp;但是说是低代码&nbsp;值得去吗
码农索隆:是在没实习,可去,待个一两周,不行就润呗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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