Best Time to Buy and Sell Stock 【最佳买卖股票的时间】【容易】
2017-07-28 14:03
507 查看
一、题目
英文: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.
中文:给一个数组prices[],prices[i]代表股票在第i天的售价,求出只做一次交易(一次买入和卖出)能得到的最大收益。
三、示例
示例一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)
示例二
Input: [7, 6, 4, 3, 1] Output: 0 In this case, no transaction is done, i.e. max profit = 0.
四、代码
1.java代码
public int maxProfit(int[] prices) { int maxCur = 0, maxSoFar = 0;//记录当前的差值(前后两个数) 和 曾经出现过的最大差值 for(int i = 1; i < prices.length; i++) { maxCur = Math.max(0, maxCur += prices[i] - prices[i-1]);//先求前后之间的差值,然后通过累计差值得到maxCur maxSoFar = Math.max(maxCur, maxSoFar);//利用maxSoFar保存曾经最大的差值。从曾经和现在的取出其中最大的值 } return maxSoFar;//返回最大的差值 } //其中,*maxCur = current maximum value *maxSoFar = maximum value found so far
1.2另一种易理解形式
public int maxProfit(int[] prices) { if (prices == null || prices.length < 1) { return 0; } int min = prices[0]; int profit = 0; 907d // 第i天的价格可以看作是买入价也可以看作是卖出价 for (int i = 1; i < prices.length; i++) { // 找到更低的买入价 if (min > prices[i]) { min = prices[i];// 更新买入价 } // 当天的价格不低于买入价 else { if (profit < prices[i] - min) {// 如果当天买出的价格比之前卖出的价格高 profit = prices[i] - min;// 更新卖出价 } } } return profit; }
相关文章推荐
- 122. Best Time to Buy and Sell Stock II 最佳买卖股票的时间
- Best Time to Buy and Sell Stock II 最佳时间买入卖出股票(多次买卖)@LeetCode
- [LeetCode] 121. Best Time to Buy and Sell Stock 买卖股票的最佳时间
- [LeetCode] Best Time to Buy and Sell Stock IV 买卖股票的最佳时间之四
- [LeetCode] Best Time to Buy and Sell Stock IV 买卖股票的最佳时间之四
- LeetCode OJ 之 Best Time to Buy and Sell Stock (买卖股票的最佳时间)
- 【LeetCode】Best Time to Buy and Sell Stock(买卖股票的最佳时间)
- [LeetCode] 123. Best Time to Buy and Sell Stock III 买卖股票的最佳时间 III
- 【LeetCode-面试算法经典-Java实现】【121-Best Time to Buy and Sell Stock(最佳买卖股票的时间)】
- LeetCode OJ 之 Best Time to Buy and Sell Stock II (买卖股票的最佳时间 2)
- [LeetCode] 188. Best Time to Buy and Sell Stock IV 买卖股票的最佳时间 IV
- 121. Best Time to Buy and Sell Stock 最佳买卖股票时间
- LeetCode-121-Best Time to Buy and Sell Stock(最佳买卖股票的时间)
- [LintCode] Best Time to Buy and Sell Stock 买卖股票的最佳时间
- Best Time to Buy and Sell Stock III 最佳时间买入卖出股票(最多两次买卖)@LeetCode
- leetcode 121.Best Time to Buy and Sell Stock 股票买卖最佳时间
- 【LeetCode-面试算法经典-Java实现】【121-Best Time to Buy and Sell Stock(最佳买卖股票的时间)】
- LintCode--best-time-to-buy-and-sell-stock-ii(买卖股票的最佳时机 II)
- LeetCode 122 Best Time to Buy and Sell Stock II(股票买入卖出的最佳时间 II)
- [Leetcode] Best time to buy and sell stock 买卖股票的最佳时机