LeetCode刷题Day2
LeetCode121. 买卖股票的最佳时机(简单)
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0
算法思想
动态规划思想
今天卖出的最大值=今天价格 - 之前买入可能遇到的最小价格
代码实现
int maxProfit(int* prices, int pricesSize){
int i;
int profit, min=prices[0], max=0;
for(i=1; i<pricesSize; i++){
profit = prices[i]-min;
if(profit>max)
max = profit;
if(prices[i]<min)
min = prices[i];
}
return max;
}
问题
总是不能正确完成动态规划的子问题划分,多练习
注意区分动态规划和一分为几个小问题区分
动态规划: f(n)可以由f(n-1)来求出,更像是一种递归