扑克牌顺子

扑克牌顺子

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

特判:如果size小于5 false 如果 有1个不为0的数且0的个数为4 true
思路:先排序计算再计算0的个数,然后去重。
去重之后暴力枚举所有1~5的子序列,检查相邻的差值-1的是否小于0的个数 并且 相邻的差值-1的和加上子序列的长度加上剩余0的个数是否大于等于5 如果满足则返回true
程序运行到底还无返回则默认返回false

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        if(numbers.size() < 5) return false;
        sort(numbers.begin(), numbers.end());
        int zero = 0,l  = 0;
        while(numbers[zero] == 0) zero++;
        numbers.erase(unique(numbers.begin(),numbers.end()),numbers.end());
         while(numbers[l] == 0) l++;
        int b = 0;
        if(zero > 0) b = 1;
        if(zero == 4 && numbers.size()-b >= 1) return true;
        for(int i = l; i < numbers.size(); i ++) {
            int sum = 0;
            for(int j = i+1; (j <= i+4) && j < numbers.size(); j ++) {
                sum += numbers[j]-numbers[j-1]-1;
                if(sum <= zero && j-i+1+sum+zero-sum>=5) return true;
            }
        }
        return false;
    }
};
全部评论

相关推荐

昨天 11:10
武汉纺织大学 C++
点赞 评论 收藏
分享
02-12 17:30
已编辑
字节跳动_实习生(实习员工)
要怎么办呢牛:我觉得大厂日常实习最大的意义就是给自己背书,一个好公司的实习就像一个好学历似的,能够给自己增加一个标签,让别人觉得你可以。(至于真正实习干了啥,这个感觉并不太重要)。当然一家之言,仅供参考。另外,楼主已经很强了,实习毕业双双拿下,已经领先好多好多人了,羡慕啊
点赞 评论 收藏
分享
2024-12-25 09:09
四川师范大学 运营
想和你交朋友的潜伏者要冲国企:先去沃尔玛亲身感受标准化流程体系,一两年后再跳槽国内任何零售行业,可以有更大选择权吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务