当前位置: 首页 > article >正文

[Leetcode LCR188.][Medium]-买卖芯片的最佳时机-dp/状态压缩

目录

一、题目描述

二、整体思路

三、代码


一、题目描述

原题地址

二、整体思路

  1. 可以设一个长度为price.length的dp数组,dp[i]表示到第i天时的最大利润。因为买入操作只能在卖出操作之前完成,因此需要记录下遍历prices数组到第i天时历史最低价格minp,每次遍历都要更新历史最低价格,状态转移方程为dp[i]=Math.max(dp[i-1],prices[i]-minp)
  2. 对于每个dp[i],只会用到前一天的最大利润即dp[i-1],那么可以进行状态压缩,将dp一维数组压缩成一个int。

三、代码

class Solution {//一维dp数组
    public int bestTiming(int[] prices) {
        if(prices.length==0){
            return 0;
        }
        int minp=prices[0];
        int dp[]=new int[prices.length];
        dp[0]=0;
        for(int i=1;i<prices.length;i++){
            if(prices[i]<minp){
                minp=prices[i];
            }
            dp[i]=Math.max(prices[i]-minp,dp[i-1]);
        }
        return dp[prices.length-1];
    }
}
class Solution {
    public int bestTiming(int[] prices) {
        int res=0;//状态压缩后
        if(prices.length==0){
            return res;
        }
        int minp=prices[0];
        for(int i=0;i<prices.length;i++){
            if(prices[i]<minp){
                minp=prices[i];
            }
            res=Math.max(prices[i]-minp,res);
        }
        return res;
    }
}


http://www.kler.cn/news/335095.html

相关文章:

  • 文件后缀名不见了怎么办?
  • 【微服务】服务调用 - OpenFeign(day6)
  • linux启用 IPv4 转发
  • 物理学基础精解【56】
  • 每日一练:最长湍流子数组
  • Lustre v6 介绍
  • 力扣10.6
  • AI赋能,旅游新纪元,看旅游大厂携程的AI实践
  • D28【python 接口自动化学习】- python基础之输入输出与文件操作
  • OracleJDBC 连接地址URL写法
  • RxSwift系列(二)操作符
  • C#中的事件、代理与任务:深入剖析发布者 - 订阅者模式中的关键元素
  • Leetcode 1498. 满足条件的子序列数目
  • 13:URL输入到页面渲染过程
  • LeetCode Hot100 | Day1 | 二叉树:二叉树的直径
  • Nginx技术深度解析与实战应用
  • 通信工程学习:什么是RARP反向地址解析协议
  • 【笔记】信度检验
  • 令牌主动失效机制范例(利用redis)注释分析
  • 系统规划与管理——1信息系统综合知识(5)