【LeetCode刷题记录】121. 买卖股票的最佳时机

动态规划

class Solution {
    public int maxProfit(int[] prices) {
        if(prices.length<=1){//如果长度小于等于1,则最多挣0
            return 0;
        }
       int [] dp=new int[2];//定义一个数组,0存放当天存有股票,1存放当天没有股票
        dp[1]=-prices[0];//初始化有股票的时候的钱,即第一天买了股票
        dp[0]=0;//初始化没有股票时候的钱,即第一天没有买股票
       for(int i=1;i<prices.length;i++){//遍历所有天数,找出挣的最多的
            dp[0]=Math.max(dp[0],dp[1]+prices[i]);//当前没有股票的两种情况:前一天没有股票;前一天有股票,今天卖了
            dp[1]=Math.max(dp[1],-prices[i]); //当天有股票的两种情况:前一天有股票,今天无操作;前一天没有股票,今天买了   
        }
        return dp[0];//返回最后一天没有股票时的最大值
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值