问题描述:使用正整数数组a设计有效算法:
- a[j]+a[i]的最大值,其中j>i;
- a[j]-a[i]的最大值,其中j>i;
- a[j]*a[i]的最大值,其中j>i;
- a[j]/a[i]的最大值,其中j>i;
解决问题:解决这些问题的难点在于j>=i的附加条件,代表被加数,被减数,被乘数与被除数都要在数组中加数,减数,乘数与除数的后面。
问题一:a[j]+a[i]的最大值,其中j>=i;
- 先介绍时间复杂度为ON2的算法:通过两层循环,计算出所有两数和的可能性,再选出相加后和最大的。算法如下:
private static int findMaxSum(int[] arr) {
int sum = 0;
int len = arr.length;