在判空去重的情况下,找出数组中的最大的数和最小的数相减,如果相减的结果小于数组的长度则是连续的

扑克牌顺子

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

public class Solution {
    public boolean isContinuous(int [] numbers) {
         if(numbers == null || numbers.length < 5){
             return false;
         }
        int[] num = new int[14]; 
        int max =1;
        int min = 13;
        for(int i = 0; i < numbers.length; i++){
            num[numbers[i]]++;
            //有重复的数
            if(numbers[i] !=0 && num[numbers[i]]>1){
                return false;
            }
            //找到最大的数
            if(numbers[i] > max){
                max = numbers[i];
            }
            //找到最小且不是万能牌的数
            if(numbers[i] < min && numbers[i] !=0){
                min = numbers[i];
            }
        }
        //如果数组中最大的数减去最小的数大于等于数组的长度则肯定是不连续的
        //例如1,2,3,4,5, 5-1 = 4;
        if(numbers.length > max -min){
            return true;
            }
        return false;
    }
}
全部评论

相关推荐

offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务