水下功夫做透,水上才能顺风顺水。

股票的最大利润(买卖一次)

int[] a = {7,1,5,3,6,4}

 不是动态规划,没有状态转移方程。

第i日最大收益:d[i] = a[i]-min(a{0,i-1})
n个第i日构成的数组D[i],D[i]中最大值即为所求。

int getMaxProfit(int[] a,int len){

    int min = a[0];
    int[] D = new int[len];
    for(int i=1; i<len; i++){
        if(a[i-1]<min){
            min = a[i];
        }
        curMax = a[i] - min;
        D[i] = curMax;
    }
    int max = D[0];
    for(int i =0;i<len; i++){
        if(D[i]>max){
            max = D[i];
        }
    }
   delete[] D;
return max; }

 

posted @ 2021-06-15 21:25  北方寒士  阅读(134)  评论(0编辑  收藏  举报