right = 0, 1 # left=buy, right=sell maxP = 0 while right < len(prices): ## 遍历整个 list if prices[right] > prices[left]: ## 在存在赚钱机会的条件下 profit = prices[right] - prices[left] maxP = max(maxP, profit) else: ## 对于任意一个右指针日期,我们都要回顾它后面的所有...
然后sell往后移, 若prices[sell] < prices[buy],则将buy指向sell当前位置(buy = sell),否则计算当前股票买卖收益,并和之前计算的收益比较,取最大的值。 1//双指针法求股票买卖最佳时机问题23intmaxProfit_doublePtr(vector<int>&prices)4{5intbuy=0,sell=0;6intmaxProfit =0;7for(;sell<prices.size();++...
LeetCode算法题-Best Time to Buy and Sell Stock 这是悦乐书的第172次更新,第174篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第31题(顺位题号是121)。假设有一个数组,其中第i个元素是第i天给定股票的价格。如果只被允许完成最多一笔交易(即买入并卖出一股股票),请设计算法以找到最大利...
这道题是买卖股票问题的终极版,即给定一个数组表示各天的股价,给定k表示最多可以交易的次数(一次交易定义为buy+sell),各次交易之间不能交叉,问最大收益是多少。 这题可以使用动态规划求解。记 为在 天进行至多 次 次交易可以得到的最大收益。不难写出转移方程: 其意义为,在第 天我们有两个选择: 1、什么都...
LeetCode121. Best Time to Buy and Sell Stock JonesM https://leetcode.com/problems/best-time-to-buy-and-sell-stock/leetcode.com/problems/best-time-to-buy-and-sell-stock/ 解题思路 1. 暴力 O(n2) 复杂度,超时 class Solution { public: int maxProfit(vector<int>& prices) { int maxVal...
1.题目 Say you have an array for which theithelement is the price of a given stock on dayi. If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit. ...
LeetCode.jpg 121. 买卖股票的最佳时机 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例1:
public class BestTimetoBuyandSellStock { [TestMethod] public void MaxProfit() { int[] price = new[] { 2,3,2,5 }; var temp = Algorithm.Model.BestTimetoBuyandSellStock.MaxProfit(price); Assert.AreEqual(temp, 3); price = new[] ...
解法1 参照leetcode 122, 解法几乎一样 但这里需要三个数组, sell: 每次卖出股票后自身的收益 buy: 每次买入股票后自身的收益 cooldown: 冷冻股票后自身的收益 根据题意很明显:cooldown[i] = sell[i-1] 因为题目说在卖出之后需要一个冷冻期 sell[i] = max( sell[i-1], buy[i-1] + prices[i] ) ...
121. 买卖股票的最佳时机 - 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的