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

题目

剑指offer-扑克牌顺子 -- Java实现_第1张图片

分析

思路一:

可以这么理解,简单来说就是要是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;
        }
    }
}

你可能感兴趣的:(算法与数据结构)