问题描述:
Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).
原问题链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/
问题分析
在这个问题的场景里,它和前面的情况有点不同。因为你可以选择在这若干天里买卖若干次。只是每次只能有一个交易,也就是说,每次只能卖一个,买一个。我们可以这么来看,对于价格来说,它后面的价格可能比前面的高,也可能比前面的低。如果要获取最大利益的话,就需要将所有后面比前面高的价格差都获取。对于一个存在有一个或者若干个递增的序列来说,我们可以每次计算一个元素和它前一个元素的差,再把这些差累积起来,这就是它能获取到的最大利益。
但是,并不是所有序列都是严格递增的,可能后面的值比前面的小。那么从利益最大化来说,它就应该不能卖,也就是说,当前的利益值为0。这样,我们可以在一个循环里,计算当前元素和前一个元素的差值,并取它和0之间最大的那个累加到结果中。这样得到的就是最终的最大利润值。
详细代码实现如下:
public class Solution { public int maxProfit(int[] prices) { int price = 0, result = 0; for(int i = 1; i < prices.length; i++) { result += Math.max(price, prices[i] - prices[i - 1]); } return result; } }
相关推荐
《最佳买卖股票时机II》是LeetCode中的一道经典编程题目,主要涉及动态规划和数组操作的知识点。在这个问题中,我们被赋予一个整数数组`prices`,表示某支股票每天的价格。任务是找到在允许进行多次交易的情况下,...
java java_leetcode题解之Best Time to Buy and Sell Stock II.java
java java_leetcode题解之Best Time to Buy and Sell Stock with Cooldown
java java_leetcode题解之Best Time to Buy and Sell Stock IV.java
java java_leetcode题解之Best Time to Buy and Sell Stock III.java
java java_leetcode题解之Best Time to Buy and Sell Stock I.java
leetcode LeetCode 解决题目的总数: 136/1753 微信公众号: 工程师Ruojhen 算法-动态规划 题号 名称 English Name 题解 53 最大子序和 Maximum Subarray 70 爬楼梯 Climbing Stairs 121 买卖股票的最佳时机 Best Time...
股票收益leetcode LeetCode 股票问题 Best Time to Buy and Sell Stock (Easy) 一次交易,找最大收益 for i in prices: low = min(low, i) profit = max(profit, i-low) Best Time to Buy and Sell Stock II (Easy) ...
python python_leetcode题解之122_Best_Time_to_Buy_and_Sell_Stock_II
python python_leetcode题解121_Best_Time_to_Buy_and_Sell_Stock
leetcode leetcode-java leetcode刷题笔记 已做题目列表 1.Two Sum 3.Longest Substring Without Repeating Characters 5.Longest Palindromic Substring 20.Valid Parentheses 26.Remove Duplicates from Sorted ...
javascript js_leetcode题解之122-best-time-to-buy-and-sell-stock-ii.js
python python_leetcode题解之123_Best_Time_to_Buy_and_Sell_Stock_III
javascript js_leetcode题解之121-best-time-to-buy-and-sell-stock.js
javascript js_leetcode题解之123-best-time-to-buy-and-sell-stock-iii.js
leetcode 分类 LeetCode LeetCode Java Solution 2018年5月31日 更新 最近刷了一遍 LeetCode,发现第一次的代码确实有些 low 很多代码并不简洁,本来1行的代码可以写成3行 思维混乱 没有按照题目类型分类 没有写结题...
leetcode卡 leetcode exercises 3-5 solutions everyday. fighting~ TODO array Best Time to Buy and Sell Stock II Valid Sudoku linked list Palindrome linked list Linked List Cycle trees Convert Sorted ...
公众号 coding 笔记、点滴记录,以后的文章也会...最近花时间分门别类整理了 LeetCode 的前 500 题,把相似的题目都放在了一起,比如Best Time to Buy and Sell Stock的6道题,这些题目放在一起刷效果更好。 简书博客:
leetcode leetcode The optimum C++ solutions for the leetcode 这是我自己写的leetcode的题解,目前已经完成了70%左右,后续部分会很快更新 这里放上来的代码都能保证是最优解(复杂度最优) 当然有些题目因为测试...
63. 股票的最大利润题目链接Leetcode:121. Best Time to Buy and Sell Stock题目描述可以有一次买入和一次卖出,买入必