题解 | #扑克牌顺子#

扑克牌顺子

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;
    }
};
全部评论

相关推荐

05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
06-27 12:30
延安大学 C++
实习+外包,这两个公司底层融为一体了,如何评价呢?
一表renzha:之前面了一家外包的大模型,基本上都能答出来,那面试官感觉还没我懂,然后把我挂了,我都还没嫌弃他是外包,他把我挂了……
第一份工作能做外包吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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