leetcode 121.买卖股票的最佳时机 C语言 动态规划

题目

leetcode 121.买卖股票的最佳时机 C语言 动态规划_第1张图片

读题

求在第i天卖出的最大利润,就需要求出在[0,i-1]天之间的股票价格最小值,并返回两者之间的差值,求这个差值的最大值。

求解返回便变成了左开右闭求前缀最小值的问题。

运用动态规划

设计状态:求第i项之前的最小值就转移到求(第i-1项之前的最小值和第i项之间)的最小值

写出状态方程:premin[i]=min(premin[i-1],prices[i]);

设定初始状态:premin[0]=price[0];

执行状态转移

返回最终解

代码段 


int max(int a,int b)                        //定义一个求最大值的函数
{
    return a>b?a:b;
}
int min(int a,int b)
{
    return a

执行结果

leetcode 121.买卖股票的最佳时机 C语言 动态规划_第2张图片 

总结

万变不离其宗,剖析问题的最底层,发现是求前缀最小值问题,运用状态转移求解 

 

你可能感兴趣的:(LeetCode.,leetcode,动态规划,算法)