步骤:
1、获取数组的最大值
2、获取数组的最小值
3、判断最大值和最小值是否相等,如果相等返回-1,没有第二在的数
//查第二大数的下标
public static int getSecond(int[] nums) {
int indexMin = getMin(nums);//最小值的下标
int indexMax = getMax(nums);//获取到了最大数的下标
//判断是否最大值等于最小值--如果返回值是-1,代表没有第二大数
if(indexMin==indexMax) {
return -1;,
}
//默认让最小值当第二大数,取出最小值的下标
int index = indexMin;
//取出最小值的值,假设它是第二大数
int smax = nums[indexMin];
//获取最大值
int max = nums[indexMax];
//2,8,8,8,8,8,8,8,8,8,8
for(int i=0;i<nums.length;i++) {
//排除掉最大值,在不是最大值里找
if(nums[i]!=max) {
//剩下的数打擂台,如果数组中还有比第二大数大的,就覆盖我们假设的第二大值
if(nums[i]>smax) {
smax=nums[i];
index = i;
}
}
}
return index;
}
// 这个方法是获取最大值的方法 返回下标 0-length-1
public static int getMax(int[] nums) {
int index = 0;// 默认让第一个数最大
int max = nums[0];
// 打擂台
for (int i = 1; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];// 记录当前最大值
index = i;// 记录当前最大值的下标
}
}
return index;
}
// 这个方法是获取最小值的方法 返回下标 0-length-1
public static int getMin(int[] nums) {
int index = 0;// 默认让第一个数最小
int min = nums[0];
// 打擂台
for (int i = 1; i < nums.length; i++) {
if (nums[i] < min) {
min = nums[i];// 记录当前最小值
index = i;// 记录当前最小值的下标
}
}
return index;
}