问题
给定一个整数数组,求数组中两个数关于公式 a[i]+a[j]+i-j 的最大值,即找两个数,这两个数相加并减去两个数之间的下标距离,求得最大值。
例如:
input:
3
1 2 3
output:
4(选择的两个数是2和3)
扩展:这个题目可以有变形,例如求一个数组中两数和的最大值,两数差的最大值,或两数和差和某些变量构成的公式的最大值。
思路
(1)基本思路:暴力搜索,遍历每一个数对,进行判断,复杂度为O(n^2)
(2)优化思路:对于遍历到的数,寻找其左边的最大值进行求和,因为只有左边的最大值与其相加才能构成更大值。所以每次维护一个左边的最大值,遍历一遍即可。时间复杂度O(n),空间复杂度O(1)
import java.util.*;
public class TT {
public static void main(String[] args) {
Scanner in = new Scanner(</