JZ45-扑克牌顺子

扑克牌顺子

https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4?tpId=13&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey

class Solution {
    public boolean isContinuous(int[] numbers) {
        if (numbers == null || numbers.length != 5) {
            return false;
        }
        HashSet<Integer> set = new HashSet<>();

        for (int i = 0; i < 5; i++) {
            if (numbers[i] != 0) {//不包含0
                if (!set.contains(numbers[i])) {
                    set.add(numbers[i]);
                } else {
                    return false;//肯定不能有重复
                }
            }
        }

        return (Collections.max(set) - Collections.min(set)) < 5;//最大最小相差5
    }
}

class Solution2 {
    public boolean isContinuous(int[] numbers) {
        if (numbers == null || numbers.length != 5) {
            return false;
        }
        Arrays.sort(numbers);

        int count = 0;
        for (int temp : numbers) {
            if (temp == 0) {
                count++;
            } else { //已排序,碰到第一个不为0的就break
                break;
            }
        }
        for (int i = count; i < numbers.length - 1; i++) {
            if (numbers[i] == numbers[i + 1]) {
                return false;
            }
            count -= (numbers[i + 1] - numbers[i] - 1); // 0 0 1 2 5 。。。两个非0数之间差一,正常;超过一就要用0补
        }
        return count >= 0; // 0 0 0 0 5.。。只需要剩余的0》=0即可,直接等于0会出问题
    }
}

全部评论

相关推荐

孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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