然后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();++...
publicintmaxProfit(int[]prices){if(prices.length==0){return0;}intK=2;int[][]dp=newint[prices.length][K+1];for(intk=1;k<=K;k++){for(inti=1;i<prices.length;i++){intmin=Integer.MAX_VALUE;//找出第 0 天到第 i 天 prices[buy] - dp[buy][k - 1] 的最小值for(intbuy=0;bu...
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。 你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。
121. Best Time to Buy and Sell Stock 122. Best Time to Buy and Sell Stock II 123. Best Time to Buy and Sell Stock III 188. Best Time to Buy and Sell Stock IV 309. Best Time to Buy and Sell Stock with Cooldown 714. Best Time to Buy and Sell Stock with Transaction Fee 以上每个...
1. BestTimetoBuyandSellStock 1 给出一个数组,代表第 i 天股票的价格。只能买卖一次,现在设计一个算法, 可以求出最大的profit。 用例:[7,1,5,3,6,4] ==> 5 [5,4,3,2,1] ==> 0 分析与思路 这个没啥好分析的,就是遍历一遍,以O(n)的时间复杂度,记录下买入价格。然后比较得出最大的 profit。
best-time-to-buy-and-sell-stock-iii(hard) (第一次没做出来) 给定一个数组,它的第i个元素是一支给定的股票在第i天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/解题思路1. 暴力 O(n^2) 复杂度,超时class Solution { public: int maxProfit(vector<int>& prices) { int maxVal = 0; int n = price…
Output: 5 在这个样例中,最大的利润为在第二天价格为 1 时买入,在第五天价格为 6 时卖出 题解 我们可以遍历一遍数组,在每一个位置 i 时,记录 i 位置之前所有价格中的最低价格,然后 将当前的价格作为售出价格,查看当前收益是不是最大收益即可。
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[] ...
309. Best Time to Buy and Sell Stock with Cooldown** 714. Best Time to Buy and Sell Stock with Transaction Fee** 通用的递推公式为: Base cases: T[-1][k][0]=0, T[-1][k][1]=-Infinity T[i][0][0]=0, T[i][0][1]=-Infinity ...