题解 | #买卖股票的最好时机(一)#
买卖股票的最好时机(一)
https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec
import java.util.*;
public class Solution {
/**
*
* @param prices int整型一维数组
* @return int整型
*/
/**
思路:
定义一个二维dp[][] dp[i][0] 表示第i天不持股 拥有的钱
dp[i][1] 表示第i天持股 拥有的钱
具体就是:在股价最低的时候买入 在股价最高的时候卖出
当不持股时 如果前一天也不持股 那么什么也不做 如果前一天持股那么可以选择卖出
dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1] + prices[i]);
当持股时 如果前一天不持股 可以选择持股 如果前一天持股 则判断哪天持股更好
*/
public int maxProfit (int[] prices) {
// write code here
//创建化状态方程
int dp[][] = new int[prices.length][2];
//初始化二维dp
dp[0][0] = 0 ; //第一天不持股
dp[0][1] = -prices[0]; //第一天持股
for(int i = 1 ; i < prices.length ; i++){
dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1] + prices[i]);
dp[i][1] = Math.max(dp[i-1][1], -prices[i]);
}
return dp[prices.length - 1][0];
}
}

