121. 买卖股票的最佳时机
2019-03-11 14:28
232 查看
121. 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。
注意你不能在买入股票前卖出股票。
示例 1:
输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意:利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:
输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
暴力法解决:
class Solution { public static int maxProfit(int[] prices) { int max = 0; for (int i = 0; i < prices.length; i++) { for (int j = i + 1; j < prices.length; j++) { int tem = prices[j] - prices[i]; if (tem > max) { max = tem; } } } return max; } }
参考解题思路:
动态规划,目前最小价格 = Min{当天价格,目前最小价格}, 目前最大收益 = Max{当天价格 - 目前最小价格, 目前最大收益}
AC code:
class Solution { public int maxProfit(int[] prices) { if(prices == null || prices.length == 0) { return 0; } int currentPrice = prices[0]; int maxProfit = 0; for(int i = 0; i < prices.length; i++ ) { currentPrice = Math.min(prices[i],currentPrice); maxProfit = Math.max(prices[i]-currentPrice,maxProfit); } return maxProfit; } }
相关文章推荐
- Leetcode121 Best Time to Buy and Sell Stock(买卖股票的最佳时机1)
- Leetcode121: 买卖股票的最佳时机
- LeetCode-121.买卖股票的最佳时机(相关话题:动态规划)
- LeetCode 121 买卖股票的最佳时机 Python
- 基础算法之买卖股票最佳时机(Leetcode-121)
- C++Leetcode121:买卖股票的最佳时机
- LeetCode题库解答与分析——#121. 买卖股票的最佳时机BestTimeToBuyAndSellStock
- 基础算法之买卖股票的最佳时机 II(Leetcode-122)
- 买卖股票的最佳时机 III
- Java实现-买卖股票的最佳时机4
- 利用python 完成 leetcode123 买卖股票的最佳时机 III
- 算法学习——leetcode122. 买卖股票的最佳时机 II
- LintCode:买卖股票的最佳时机 III
- lintcode-150-买卖股票的最佳时机 II
- 买卖股票的最佳时机 III-LintCode
- 买卖股票的最佳时机I、II、III、IV
- 买卖股票的最佳时机
- 188. Best Time to Buy and Sell Stock IV(买卖股票的最佳时机 IV)
- 买卖股票的最佳时机
- 【LintCode】买卖股票的最佳时机