【每天一道算法题】day1-数组,给定一个数组,表示连续n天的股价,数组下标表示第几天

来自神策

  • 给定一个数组,表示连续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
 * 

* 时间复杂度哦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)); } }

你可能感兴趣的:(算法,算法,java,数据结构)