题解 | #买卖股票的最好时机(一)#动态规划

买卖股票的最好时机(一)

https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec

动态规划直接求解(C语言):
不难得到方程:最大利润Maxprofit=max(Maxprofit(前一天的最大利润),prices[i]-min(此前的最小值))
求解步骤如下:
1.遍历数组,并保存最小值(动态更新)
2.比较前i天的利润,求最大值
3.输出最大利润
此算法时间复杂度=O(n),空间复杂度=O(1)。
int maxProfit(int* prices, int pricesLen ) {
    int i=0,j=0,profit=0,min=prices[0],Maxprofit=0;
    for(i=1;i<pricesLen;i++){
    //遍历过程中记录数组最小值
        if(min>prices[i]){
            min=prices[i];
        }
    //最大利润Maxprofit=max(Maxprofit(前一天的最大利润),prices[i]-min(此前的最小值))
        profit=prices[i]-min;
        if(Maxprofit<profit){
            Maxprofit=profit;
        }
    }
    return Maxprofit;
}


#华为##笔试题型##算法工程师##字节跳动##阿里巴巴#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务