Самая ценная проблема массива

алгоритм

Как только человек поймет это досконально, он замолчит, и дело не в том, что он не умеет ладить с другими, а в том, что ему неинтересно высмеивать других.


решить эти проблемы, еслиНужно отсортировать массив, Извини за это...

在这里插入图片描述


1. Найдите максимальное значение массива

	public int getMax(int[] array) {
        // 注意这里,求最大值时,将初始值设置为Integer.MIN_VALUE
        int max = Integer.MIN_VALUE;
        for(int n : array){
            max = Math.max(max,n);
        }
        return max;
    }

Адрес практики:LintCode - 2176 · Найти максимальное значение массива


2. Найдите минимальное значение массива

public int getMin(int[] array){
	// 注意这里,求最小值时,将初始值设置为Integer.MAX_VALUE
	int min = Integer.MAX_VALUE;
	for(int n : array){
		min = Math.min(min,n);
	}
	return min;
}

3. Найдите второе наименьшее значение массива (курсив)

Хотя разница между минимальным значением и следующим минимальным значением составляет всего одно слово, но «разница на расстоянии тысячи миль».

Предпосылка здесь заключается в том, чтоне отсортировано

1. Две петли: временная сложность O(n)
 public static int finSecMin(int[] nums){
        int min = Integer.MAX_VALUE;
        int secMin = Integer.MAX_VALUE;

        for(int i  = 0; i < nums.length; i++){
            min = Math.min(nums[i], min);
        }
        System.out.println("最小值:"+min);

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] > min){
                secMin = Math.min(nums[i],secMin);
            }
        }
        System.out.println("次最小值:"+secMin);
        return secMin;
    }

Есть ли лучшее решение? Ответ положительный.

2. Оптимальное решение: временная сложность O(n)

После цикла for вы можете получитьминимумиследующее наименьшее значение

 public static int  finSecMin(int[] nums){
        int min = Integer.MAX_VALUE;
        int secMin = Integer.MAX_VALUE;

        for (int i = 0; i < nums.length; i++) {
            if(nums[i] < min){
                secMin = min;
                min = nums[i];
            }else if(nums[i] < secMin){
                secMin = nums[i];
            }
        }
        System.out.println("最小值:"+min+",次最小值:"+secMin);
        return secMin;
    }

здесь для этихКлассическое решение (несортированное)Подводя итог, я считаю, что эти гаджеты могут принести вам большую помощь на пути к решению вопросов...