leetcode日常练习day4

📅 2026/7/6 2:57:08
leetcode日常练习day4
#不是一天一练有空闲时间就会来练的~121. 买卖股票的最佳时机给定一个数组prices它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润返回0示例 1输入[7,1,5,3,6,4]输出5解释在第 2 天股票价格 1的时候买入在第 5 天股票价格 6的时候卖出最大利润 6-1 5 。 注意利润不能是 7-1 6, 因为卖出价格需要大于买入价格同时你不能在买入前卖出股票。示例 2输入prices [7,6,4,3,1]输出0解释在这种情况下, 没有交易完成, 所以最大利润为 0。看到这个示例我想着是用双指针固定一个左指针不动然后让右指针先行找到比当前指针所指的数字小的然后作差保留这些差值找出最大的差值即最大利润。我的代码如下但是最后超时了下面这个测试案例还真的是挺恶心人的看了一下官方题解和别人的解读大致意思是说如果第i天卖出了股票则最大利润为(该天的股价-前面天数中最小的股价)然后与现有的最大利润比较如果大于则更新当前最大利润的值。以下是别人的代码简洁明了很美丽了122. 买卖股票的最佳时机 II给你一个整数数组prices其中prices[i]表示某支股票第i天的价格。在每一天你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。然而你可以在同一天多次买卖该股票但要确保你持有的股票不超过一股。返回你能获得的最大利润。示例 1输入prices [7,1,5,3,6,4]输出7解释在第 2 天股票价格 1的时候买入在第 3 天股票价格 5的时候卖出, 这笔交易所能获得利润 5 - 1 4。 随后在第 4 天股票价格 3的时候买入在第 5 天股票价格 6的时候卖出, 这笔交易所能获得利润 6 - 3 3。 最大总利润为 4 3 7 。示例 2输入prices [1,2,3,4,5]输出4解释在第 1 天股票价格 1的时候买入在第 5 天 股票价格 5的时候卖出, 这笔交易所能获得利润 5 - 1 4。 最大总利润为 4 。示例 3输入prices [7,6,4,3,1]输出0解释在这种情况下, 交易无法获得正利润所以不参与交易可以获得最大利润最大利润为 0。看到这道题大脑有点小小宕机因为不知道需要保留哪些数字后面看到一个很厉害的题解这个是一个大佬做的的确只要两天相隔是上升的说明可以卖出可以保留这个利润所以只需要比较前后两天是否是上升的即可最后进行一个累加。以上出处来自作者Krahets 链接https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/solutions/12625/best-time-to-buy-and-sell-stock-ii-zhuan-hua-fa-ji/ 来源力扣LeetCode以下也是在此基础上的代码改进的确做之前应该先确定一个好的思路然后再动手就会发现其实也没有那么难的确思路真的很重要今天结束~