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

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

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;
}


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

相关推荐

点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
昨天 12:07
门头沟学院 Java
勇敢牛牛不怕困难
投递OPPO等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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