剑指offer45

import java.util.Arrays;

public class JZ45 {
    public boolean isContinuous(int [] numbers) {
        if(numbers.length != 5){
            return false;
        }
        Arrays.sort(numbers);
        int min = 0,max = numbers[4];
        int k = 0;
        for(int i = 0; i < 5; i++){
            if(numbers[i] != 0){
                min = numbers[i];
                k = i;
                break;
            }
        }
        for(int i = k; i < 4; i++){
            for(int j = i + 1; j < 5; j++){
                if(numbers[i] == numbers[j]){
                    return false;
                }
            }
        }
        if((max - min) < 5){
            return true;
        }
        return false;
    }
    //此题还可以使用hash思想,新建一个一维数组作为散列表,牌的值作为散列地址,牌的出现次数作为散列表存储的值。这样时间复杂度O(n)
}

注释里的是优化的方法,优化后时间复杂度降低了,空间复杂度提高了。

posted @ 2020-08-19 22:23  雨下_整夜  阅读(107)  评论(0编辑  收藏  举报