剑指offer-扑克牌顺子 -- Java实现

题目

在这里插入图片描述

分析

思路一:

可以这么理解,简单来说就是要是5个数字,最大和最小差值在5以内,并且没有重复数值。用一个set来填充数据,0不要放进去。set的大小加上0的个数必须为5个。此外set中数值差值在5以内。

代码:

import java.util.TreeSet;
public class Solution {
    public boolean isContinuous(int [] numbers) {
        if(numbers.length != 5) return false;
        int num = 0;
        TreeSet<Integer> treeSet = new TreeSet<>();
        for(int i = 0; i < numbers.length; i++) {
            if(numbers[i] == 0) {
                num++;
            } else {
                treeSet.add(numbers[i]);
            }
        }
        
        if(treeSet.size() + num != 5) {
            return false; //虽然前面已经判断过一次长度,但这里是防止set中添加重复数字
        } else {
            return (treeSet.last() - treeSet.first()) < 5;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42054926/article/details/106146926