目 录
一、题目描述
二、题目解答
三、总结
一、题目描述
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。
二、题目解答
整体的思路就是我们要找到在目标值之前的最小值作为我们买入的点,然后计算出能获得的最大利润
思路:1. 设数组第一个元素为最小值,设最大利润为 0
2. 遍历数组,若当前值小于最小值就更新;若不满足就计算当前利润值并和最大利润值作比较
3. 返回最大利润
class Solution { public int maxProfit(int[] prices) { int min = prices[0]; int profit = 0; for(int i = 1; i < prices.length; i++){ if(prices[i] < min){ min = prices[i]; }else{ profit = Math.max(profit,(prices[i] - min)); } } return profit; } }三、总结
贪心算法的本质就是将每一步都做当前看来最好的选择,并且局部最优最终能推导出全局最优!✌️