LeetCode - 股票交易的最大利润
2018-03-05 15:28
543 查看
题目: Best Time to Buy and Sell Stock II
假设有一个数组,它的第 i 个元素是一个给定的股票在第 i 天的价格。
设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。
思路:
因为是找最大的利润,只要后一天的价格大于今天的价格,就可以做差价计算到总计润中去。
最终代码:
假设有一个数组,它的第 i 个元素是一个给定的股票在第 i 天的价格。
设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参与多个交易(你必须在再次购买前出售股票)。
思路:
因为是找最大的利润,只要后一天的价格大于今天的价格,就可以做差价计算到总计润中去。
最终代码:
public class MaxProfile { @Test public void test() { Assert.assertEquals(0, maxProfit(new int[]{})); Assert.assertEquals(0, maxProfit(new int[]{10, 1})); Assert.assertEquals(9, maxProfit(new int[]{1, 10})); Assert.assertEquals(9, maxProfit(new int[]{1, 10, 10})); Assert.assertEquals(9, maxProfit(new int[]{1, 10, 10, 10, 10})); Assert.assertEquals(9, maxProfit(new int[]{1, 1, 10, 10})); Assert.assertEquals(18, maxProfit(new int[]{1, 1, 10, 10, 1, 10})); Assert.assertEquals(9, maxProfit(new int[]{1, 1, 10, 10, 1, 1, 1, 0})); Assert.assertEquals(17, maxProfit(new int[]{10, 0, 1, 10, 3, 5, 6, 5, 6, 4, 7, 1})); } public int maxProfit(int[] prices) { if (prices == null || prices.length < 2) { return 0; } int sum = 0; for (int i = 0; i < prices.length - 1; i++) { if (prices[i + 1] > prices[i]) { sum += prices[i + 1] - prices[i]; } } return sum; } }
相关文章推荐
- leetcode_122. Best Time to Buy and Sell Stock II 多次买卖股票,求交易的最大利润
- [LeetCode]121. Best Time to Buy and Sell Stock(求近期股票能获得的最大利润)
- LeetCode 121. Best Time to Buy and Sell Stock--股票买入后再卖出,求最大收益,最多交易一次
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 每天一道LeetCode-----买卖商品问题,计算最大利润,分别有一次交易,两次交易,多次交易的情况
- 说你有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润,最多可以完成两个交易。
- 股票买卖之多次交易最大利润
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- (LeetCode)Best Time to Buy and Sell Stock -- 求股票买卖的最大利润
- LeetCode-714:Best Time to Buy and Sell Stock with Transaction Fee (带有抛售费用的股票最大利润) -- medium
- 给你一串股票价格,找出买点和卖点,使得利润最大
- leetcode_121. Best Time to Buy and Sell Stock 求股票的最大收益 动态规划
- 求股票的最大利润
- [LeetCode] Best Time to Buy and Sell Stock with Transaction Fee 买股票的最佳时间含交易费
- leetcode——Best Time to Buy and Sell Stock III 买卖股票最大收益(AC)
- LeetCode WIith JS || 121. Best Time to Buy and Sell Stock[求股票的最佳收益,只能交易一次]
- Leetcode 188 Best Time to Buy and Sell Stock IV 至多k次买卖股票最大收益
- leetcode 122. Best Time to Buy and Sell Stock II-股票交易|贪心算法
- 面试题:股票的最大利润
- LeetCode-122:Best Time to Buy and Sell Stock II (多次股票交易最大利润)