121. Best Time to Buy and Sell Stock

问题描述
You are given an array prices where prices[i] is the price of a given stock on the ith day.

You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.

Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.

采用dp的思想,先计算一遍盈利差,再计算一遍最大收益。
空间上还可以优化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int maxProfit(int[] prices) {
int best = 0;
int[] difference = new int[prices.length];
difference[0] = 0;
for (int i = 1; i < prices.length; i++ ){
difference[i] = prices[i] - prices[i - 1];
if ( difference[i] + difference[i - 1] > difference[i] ){
difference[i] = difference[i] + difference[i - 1];
}
if (difference[i] > best){
best = difference[i];
}
}
return best;
}
}


Author

Xander

Posted on

2022-04-05

Updated on

2022-04-10

Licensed under

Comments