Java语言 —— 在一个整型数组中,当其中两个数的和最大时,求出这两个数的下标

  • Post author:
  • Post category:java


背景:今天去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 版权协议,转载请附上原文出处链接和本声明。