您的位置:首页 > 其它

LeetCode 121. Best Time to Buy and Sell Stock

2016-10-06 00:00 423 查看

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:

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.

这题目是今年携程秋招算法的第二题,卡了我半天。

原因在于携程没有写 Example 2,就是不交易的情况。

国内的算法考试不知道是故意的还是没上心,题目解释的太少了,各种陷阱。

题目非常简单,怎么做两个循环都出来了。用DP的话O(n)就行

public class Solution {
public int maxProfit(int[] prices) {
if(prices.length==0){
return 0;
}
int balance=0;
int min = prices[0];
for(int i=1;i<prices.length;++i){
balance = Math.max(balance,prices[i]-min);
min = Math.min(min,prices[i]);
}
return balance;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LeetCode 算法 dp