Как только человек поймет это досконально, он замолчит, и дело не в том, что он не умеет ладить с другими, а в том, что ему неинтересно высмеивать других.
решить эти проблемы, еслиНужно отсортировать массив, Извини за это...
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;
}
здесь для этихКлассическое решение (несортированное)Подводя итог, я считаю, что эти гаджеты могут принести вам большую помощь на пути к решению вопросов...