来自神策
- 给定一个数组,表示连续n天的股价,数组下标表示第几天
- 指标x:任意俩天股价之和-此俩天间隔天数
- eg:
- 第三天 价格10
- 第九天 价格30
- x=10+30-(9-3)=34
- 返回最大的x
-
- 时间复杂度哦o(N)
/**
* 来自神策
* 给定一个数组,表示连续n天的股价,数组下标表示第几天
* 指标x:任意俩天股价之和-此俩天间隔天数
* eg:
* 第三天 价格10
* 第九天 价格30
* x=10+30-(9-3)=34
* 返回最大的x
* <p>
* 时间复杂度哦o(N)
*/
public class code01_MaxXFronStok {
/**
* arr[i]+arr[j]-(j-i) = arr[i]+arr[j]-j+i = arr[i]+i+arr[j]-j
*/
public static int max(int[] arr) {
if (arr == null || arr.length < 2) {
return -1;
}
int preBest = arr[0];//arr[0]+0
int ans = 0;//指标
for (int i = 1; i < arr.length; i++) {
ans = Math.max(ans, preBest + arr[i] - i);
preBest = Math.max(preBest, arr[i] + i);
}
return ans;
}
public static void main(String[] args) {
int[] arr = {5, 9, 4};
System.out.println(max(arr));
}
}