本解法不局限于5张牌的顺子,可以是任意张顺子

扑克牌顺子

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

public boolean isContinuous(int [] numbers) {
        if(numbers.length==0) return false;
        ArrayList<Integer> list = new ArrayList<>();
        int zeroCount =0;
        for(int i=0;i<numbers.length;i++){
            if(numbers[i]==0){
                //计算0的个数
                zeroCount++;
                //零不加入list
                continue;
            }
            list.add(numbers[i]);
        }
        //投机取巧借用工具类排序,排好序一切都简单了
        Collections.sort(list);
        for(int j=0;j<list.size()-1;j++){
            //计算间隔需要补充的0个数
            int temp = Math.abs(list.get(j)-list.get(j+1))-1;
            //0不够用了
            if(temp>zeroCount) return false; 
            //有相同元素,不可能是顺子
            if(temp<0) return false;
            zeroCount-=temp;
        }
        //上述for循环执行顺利表示,可以组成顺子
        return true;
    }
全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

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