[LeetCode] 121. Best Time to Buy and Sell Stock 买卖股票的最佳时间
2018-03-09 07:57
411 查看
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.
给一个某股票价格的数组,只允许一次买进股票和卖出股票,返回能获得的最大利润。
用一个变量min_price记录目前价格曾出现过的最小价格,用另一个变量max_profit记录到目前价格能获得的最大利润,遍历数组,更新两个变量的值,直到循环结束,返回max_profit。注意:min_price的初始值要设为最大数,不能设为第一个元素的值,否则当input是[]会报错。
Java:
public class Solution { public int maxProfit(int[] prices) { int res = 0, buy = Integer.MAX_VALUE; for (int price : prices) { buy = Math.min(buy, price); res = Math.max(res, price - buy); } return res; } }
Python:
class Solution: # @param prices, a list of integer # @return an integer def maxProfit(self, prices): max_profit, min_price = 0, float("inf") for price in prices: min_price = min(min_price, price) max_profit = max(max_profit, price - min_price) return max_profit
C++:
class Solution { public: int maxProfit(vector<int>& prices) { int res = 0, buy = INT_MAX; for (int price : prices) { buy = min(buy, price); res = max(res, price - buy); } return res; } };
类似题目:
[LeetCode] 122. Best Time to Buy and Sell Stock II 买卖股票的最佳时间 II
[LeetCode] 123. Best Time to Buy and Sell Stock III 买卖股票的最佳时间 III
[LeetCode] 188. Best Time to Buy and Sell Stock IV 买卖股票的最佳时间 IV
[LeetCode] 309. Best Time to Buy and Sell Stock with Cooldown 买卖股票的最佳时间有冷却期
All LeetCode Questions List 题目汇总
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【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 股票买卖最佳时间
- 【LeetCode-面试算法经典-Java实现】【121-Best Time to Buy and Sell Stock(最佳买卖股票的时间)】
- 【LeetCode】Best Time to Buy and Sell Stock(买卖股票的最佳时间)
- Best Time to Buy and Sell Stock III 最佳时间买入卖出股票(最多两次买卖)@LeetCode
- LeetCode题库解答与分析——#121. 买卖股票的最佳时机BestTimeToBuyAndSellStock
- Best Time to Buy and Sell Stock II 最佳时间买入卖出股票(多次买卖)@LeetCode
- LeetCode 121 Best Time to Buy and Sell Stock(股票买入卖出的最佳时间)
- Leetcode121 Best Time to Buy and Sell Stock(买卖股票的最佳时机1)
- [LeetCode] 123. Best Time to Buy and Sell Stock III 买卖股票的最佳时间 III
- 121. Best Time to Buy and Sell Stock 最佳买卖股票时间
- [LeetCode] 188. Best Time to Buy and Sell Stock IV 买卖股票的最佳时间 IV
- [LeetCode] Best Time to Buy and Sell Stock IV 买卖股票的最佳时间之四
- [LeetCode] Best Time to Buy and Sell Stock IV 买卖股票的最佳时间之四
- Leetcode 121. Best Time to Buy and Sell Stock 股票买卖 解题报告
- [Leetcode] Best time to buy and sell stock 买卖股票的最佳时机
- [Java语言] [Leetcode] Best Time to Buy and Sell Stock 买卖股票的最佳时机
- [Leetcode] Best time to buy and sell stock ii 买卖股票的最佳时机
- [LintCode] Best Time to Buy and Sell Stock 买卖股票的最佳时间