论坛首页 Java企业应用论坛

一道JAVA面试题

浏览 14561 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-10-18   最后修改:2010-10-18

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 

   发表时间:2010-10-18  
scholers 写道

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 


一次遍历,记下最大的累加值和下标就行了
0 请登录后投票
   发表时间:2010-10-19  
scholers 写道

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 

思路2不符合题意。

0 请登录后投票
   发表时间:2010-10-19  
asme2u 写道
scholers 写道

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 


一次遍历,记下最大的累加值和下标就行了

 

 

  这位兄弟说的很好,关键值就是最大的累加值和下标了。

0 请登录后投票
   发表时间:2010-10-19  
Kisses99 写道
scholers 写道

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 

思路2不符合题意。

 

  后来想了一下,思路2确实不符合题意

0 请登录后投票
   发表时间:2010-10-19   最后修改:2010-10-19
scholers 写道
Kisses99 写道
scholers 写道

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 

思路2不符合题意。

 

  后来想了一下,思路2确实不符合题意


一次循环就够了。

max = 0

for i = 0->n-2

  sum = a(i) + a(i + 1) + a(i + 2)

  if(sum > max)

    index = i

    max = sum

  end if

end for

print a(index),a(index+1),a(index+2)

print max

0 请登录后投票
   发表时间:2010-10-19  
感觉这题变简单了,
以前的题目是一列整型数组,找出最大的连续和值和起始下标
例子:4,-7,6,-10,-3,3,2 答案为:6,下标是2(以0开始)
0 请登录后投票
   发表时间:2010-10-19  
kimmking 写道
scholers 写道
Kisses99 写道
scholers 写道

   题目:一列整型数组,从第一个开始,累加后续两个数字,得到一个新的数组,然后判断新的数组中的最大值,从而得到这个最大值是原始数组中哪三个数字累加的,输出(打印)这三个数字,并且输出(打印)出这个最大值。

   如:2,5,-6,12,7,15,6,-10

  结果应该是输出:12,7,15

   最大值: 34

 

 

 我的思路1:

  1.先统计处累加的数组,数组长度是原始数组长度-2

  2.计算新数组的最大值

  3.根据最大值的位置输出原始数组的三个数字

  4。输出最大值

 

 思路2(如果可以打乱原始数组的次序):

  1。先冒泡排序一次,从小到大排序

  2。计算最后三个数字的值,得到结果

 

 

 

 

思路2不符合题意。

 

  后来想了一下,思路2确实不符合题意


一次循环就够了。

max = 0

for i = 0->n-2

  sum = a(i) + a(i + 1) + a(i + 2)

  if(sum > max)

    index = i

    max = sum

  end if

end for

print a(index),a(index+1),a(index+2)

print max

 

  很简单的解决方法!

0 请登录后投票
   发表时间:2010-10-19   最后修改:2010-10-19

还算比较简单:

	public void toPrintMax(int[] oldArray){
		String str=oldArray[0]+","+oldArray[1]+","+oldArray[2];
		int max=oldArray[0]+oldArray[1]+oldArray[2];
		for(int i=1;i<oldArray.length-2;i++){
			if(oldArray[i]+oldArray[i+1]+oldArray[i+2]>max){
				max=oldArray[i]+oldArray[i+1]+oldArray[i+2];
				str=oldArray[i]+","+oldArray[i+1]+","+oldArray[i+2];
			}
		}
		System.out.println(str);
		System.out.println(max);
	}

  

0 请登录后投票
   发表时间:2010-10-19  
lyw985 写道
感觉这题变简单了,
以前的题目是一列整型数组,找出最大的连续和值和起始下标
例子:4,-7,6,-10,-3,3,2 答案为:6,下标是2(以0开始)




import java.util.Hashtable;
import java.util.Map;

public class Test {

	public static void main(String[] args) {
		System.out.println(calcMaxSum(new int[] { 9, -11, 2, 3, 4, -10, 6, 3 }));
		System.out.println(calcMaxSum(new int[] { 2, -3, 1, 10, -6, -3 }));
		System.out.println(calcMaxSum(new int[] { 4, -3, 1, 10, -6, -3 }));
		System.out.println(calcMaxSum(new int[] { 3, -3, 1, 10, -6, -3 }));
		System.out.println(calcMaxSum(new int[] { 2, -3, 1, 10, -6, 7 }));
	}

	/**
	 * 返回值的 key 数组index ,value 为连续的数量(包括自身)
	 * 
	 * @param ns
	 * @return
	 */
	public static Map<Integer, Integer> calcMaxSum(int[] ns) {
		Map<Integer, Integer> map = new Hashtable<Integer, Integer>();

		// 最大连续和值(未考虑 int 型求和溢出问题)
		int maxSum = ns[ns.length - 1];
		// 向索引增大方向所能取得的最大连续和值
		int seriesSum = 0;
		// 向索引增大方向所能取得最大连续和值时,的最大索引
		int endIndex = ns.length - 1;

		for (int i = ns.length - 1; i >= 0; i--) {

			if (seriesSum > 0) {
				seriesSum += ns[i];
			} else {
				seriesSum = ns[i];
				endIndex = i;
			}

			if (seriesSum > maxSum) {
				maxSum = seriesSum;
				map.clear();
				map.put(i, endIndex - i + 1);
			} else if (seriesSum == maxSum) {
				map.put(i, endIndex - i + 1);
			}
		}
		return map;

	}

	

}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics