题解 | #扑克牌顺子#

扑克牌顺子

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


public class Solution {
    public boolean IsContinuous(int [] numbers) {
        ArrayList<Integer> listNotZero = new ArrayList<>();
        int zeroNum = 0;
        // 把非零 元素拿出来 并统计0的个数
        for(int i = 0; i < numbers.length; i++){
            if(numbers[i] != 0){
                listNotZero.add(numbers[i]);
            }
        }
        zeroNum = numbers.length - listNotZero.size();
        
        // 把非0元素排序
        Collections.sort(listNotZero);
        // 遍历非零元素, 前后两个元素相差 大于1的,在他们中间用0 补上,同时0的个数减少1
        for(int i = 0; i < listNotZero.size() -1; i++){
            if(listNotZero.get(i) + 1 != listNotZero.get(i + 1) && zeroNum != 0){
                listNotZero.add(i + 1, listNotZero.get(i) + 1);
                zeroNum --;
            }
        }
        // 判断是不是连续的数字
        boolean isTrue = true;
        for(int i = 0; i < listNotZero.size() -1; i++){
            if(listNotZero.get(i) + 1 != listNotZero.get(i + 1)){
                isTrue = false;
                break;
            }
        }
        return isTrue;
    }
}
全部评论

相关推荐

Noel_:中石油是这样的 哥们侥幸混进免笔试名单 一看给我吓尿了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务