原题:第二大数
第二大数原题链接
源码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//首先输入一个数n
int[] arr=new int[n];//定义一个长度为n的数组
for (int i = 0; i < n; i++) {//将数输入到数组中
arr[i]=sc.nextInt();
}
int max1,max2;//定义一个第一大数、一个第二大数
long res=0;
for (int i = 0; i <n-1 ; i++) {//n个数进行n-1次比较
max2=Integer.MIN_VALUE;//max2先等于int类型的最小值
max1=arr[i];
for (int j = i+1; j <n ; j++) {
if (arr[j]>max1){
max2=max1;
max1=arr[j];
}else if (arr[j]>max2&&arr[j]<max1){
max2=arr[j];
}
res+=max2;
}
}
System.out.println(res);
}
}
知识点:
整型范围的最小值为Integer.MIN_VALUE
(1)有意思的是,当达到整型的最大值也就是 Integer.MAX_VALUE 时,如果此时再 + 1 的话,值就会变为整型的最小值也就是 Integer.MIN_VALUE
(2)那么如果给整型的最小值取反或者取绝对值会是怎么样,答案是还是 Integer.MIN_VALUE -2147483648