背景:今天去CVTE面试,面试中出现了这道题目,不论结果如何,先学会这一道简单但是我还不会的题。
题目:给定一个整型数组,当数组中两个数的和最大时,求这两个数的下标;
题目解释:我的理解:找出数组中最大的两个数的下标;
思路:
1、定义一个数组arr[],数组的长度为你要找前几个最大的数,例如:本题目就是最大数和第二最大数,所以数组长度为2;
2、先写一个循环,循环的次数为数组arr[]的长度;
3、找出一个最大的数,记录它的下标;
4、将这个最大数赋值为0;
5、还有一次循环,此时,原始数组的最大数就是第二大数;
我们来看代码:
package com.cvte.com;
public class ArrayProblem {
public static void main(String[] args) {
int arr[] = {10,43,1,4,2,78,34,56,6,9}; //原始数组
int[] arr1 = getMaxValue2(arr);
for(int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i] + "\t");
}
}
public static int[] getMaxValue2(int[] arr) {
int[] outArr = new int[2]; //定义一个新的数组,长度为我们要找的最大数的个数,在此处为2
for(int i = 0; i < 2; i++) { //针对要寻找下标的个数的循环次数,次处为2
int E = 0; //定义一个标准;
for(int j = 0; j < arr.length; j++) {
if(E < arr[j]) { //如果原数组中的值大于这个标准
E = arr[j]; //将原数组的值赋给标准,此时,标准的值已经换掉,在下一次比较的时候,E不为0;
outArr[i] = j; //将此时最大值得下标放入新的数组中;
}
}
arr[outArr[i]] = 0; //在一次循环结束之后,将原始数组中的最大值赋值为0,这样原始数组中剩下的最大数就是第二最大数;
}
return outArr;
}
}
再来看看结果:
那就这样了!请大家多多指教!这个代码的思想是看一些前辈的,如有冒犯,请留言!
版权声明:本文为lzf_hlh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。