LeetCode - 121/122 - Best Time to Buy and Sell Stock
2017-07-16 09:51
351 查看
121. Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i.
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.
Example 1:
Example 2:
思路:遍历时记录最小值,用每个数减去最小值更新答案最大值。时间复杂度O(n),空间复杂度O(1)
122. Best Time to Buy and Sell Stock II
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).
这题。。是出了逗人玩的么。。可以买进卖出任意多次,那只要能收入就每天都买第二天就卖。。不就行了。。。
Say you have an array for which the ith element is the price of a given stock on day i.
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.
Example 1:
Input: [7, 1, 5, 3, 6, 4] Output: 5 max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)
Example 2:
Input: [7, 6, 4, 3, 1] Output: 0 In this case, no transaction is done, i.e. max profit = 0.
思路:遍历时记录最小值,用每个数减去最小值更新答案最大值。时间复杂度O(n),空间复杂度O(1)
class Solution { public: int maxProfit(vector<int>& prices) { int ans = 0; int mmin = INT_MAX; for (int i = 0; i < prices.size(); ++i) { mmin = min(mmin, prices[i]); ans = max(ans, prices[i] - mmin); } return ans; } };
122. Best Time to Buy and Sell Stock II
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).
这题。。是出了逗人玩的么。。可以买进卖出任意多次,那只要能收入就每天都买第二天就卖。。不就行了。。。
class Solution { public: int maxProfit(vector<int>& prices) { int ans = 0; for (int i = 1; i < prices.size(); ++i) { ans += max(prices[i] - prices[i-1], 0); } return ans; } };
相关文章推荐
- leetcode【121+122+123 best time to buy and sell stock】【python】
- LeetCode 121, 122, 123. Best Time to Buy and Sell Stock i, ii, iii
- leetcode 121 122 123 . Best Time to Buy and Sell Stock
- leetcode_[python/C++]_121/122/123/188.Best Time to Buy and Sell Stock I/II/III/IV
- leetcode(121)(122)(123)(188) Best Time to Buy and Sell Stock I/II/III/IV JAVA代码
- LeetCode 121、122、123、188:Best Time to Buy and Sell Stock
- Leetcode 121 Best Time to Buy and Sell Stock
- Leetcode算法学习日志-121 Best Time to Buy and Sell Stock
- 122 Best Time to Buy and Sell Stock II [Leetcode]
- LeetCode121 Best Time to Buy and Sell Stock
- [LeetCode] 121. Best Time to Buy and Sell Stock ❤
- leetcode122.[DP] Best Time to Buy and Sell Stock II
- LeetCode 122 Best Time to Buy and Sell Stock II
- leetcode:121. Best Time to Buy and Sell Stock(Java)解答
- 【leetcode】【121】Best Time to Buy and Sell Stock
- leetcode 121: Best Time to Buy and Sell Stock
- 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]: 121: Best Time to Buy and Sell Stock