class Solution {
public int maxProfit(int[] prices) {
//1.如果数组长度为0或者为1,则返回0;
int n=prices.length;
if(n==0||n==1){
return 0;
}
//2.设置最低利润为0
int max=0;
//3.得到两个相邻元素之差
int[] res=new int[n-1];
for(int i=0;i<n-1;i++){
res[i]=prices[i+1]-prices[i];
}
//4.如果相邻两个元素之差大于0,则说明对下一个有正作用,否则为副作用,
int[] dp=new int[n-1];
dp[0]=res[0];
max=Math.max(max,dp[0]);
for(int i=1;i<n-1;i++){
if(dp[i-1]>0){
dp[i]=dp[i-1]+res[i];
}
else if(dp[i-1]<=0){
dp[i]=res[i];
}
if(dp[i]>max){
max=dp[i];
}
}
return max;
}
}