代码随想录算法训练营29期|day53 任务以及具体安排

news2025/1/23 12:08:01

第九章 动态规划part10

  •  121. 买卖股票的最佳时机 
    // 解法1
    class Solution {
        public int maxProfit(int[] prices) {
            if (prices == null || prices.length == 0) return 0;
            int length = prices.length;
            // dp[i][0]代表第i天持有股票的最大收益
            // dp[i][1]代表第i天不持有股票的最大收益
            int[][] dp = new int[length][2];
            int result = 0;
            dp[0][0] = -prices[0];
            dp[0][1] = 0;
            for (int i = 1; i < length; i++) {
                dp[i][0] = Math.max(dp[i - 1][0], -prices[i]);
                dp[i][1] = Math.max(dp[i - 1][0] + prices[i], dp[i - 1][1]);
            }
            return dp[length - 1][1];
        }
    }

    思路:该题可以使用贪心、暴力、动态规划解决,本解法使用动态规划,确定dp数组为二维数组,代表第i天持有和不持有股票的最大金额,确定递推公式,确定持有股票的递推公式和不持有股票的递推公式。

  •  122.买卖股票的最佳时机II 
    // 动态规划
    class Solution 
        // 实现1:二维数组存储
        // 可以将每天持有与否的情况分别用 dp[i][0] 和 dp[i][1] 来进行存储
        // 时间复杂度:O(n),空间复杂度:O(n)
        public int maxProfit(int[] prices) {
            int n = prices.length;
            int[][] dp = new int[n][2];     // 创建二维数组存储状态
            dp[0][0] = 0;                   // 初始状态
            dp[0][1] = -prices[0];
            for (int i = 1; i < n; ++i) {
                dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] + prices[i]);    // 第 i 天,没有股票
                dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);    // 第 i 天,持有股票
            }
            return dp[n - 1][0];    // 卖出股票收益高于持有股票收益,因此取[0]
        }
    }

    思路:于上一题的区别就是本题可以多次买卖股票,dp数组、遍历顺序都一样,就是持有股票的递推公式发生了变化,当天i买股票的钱为前一天不持有股票的最大金额减去买股票的钱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1454564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux网络】网络编程套接字(预备知识+UDP)

目录 预备知识 1. 理解源IP地址和目的IP地址 2. 理解源MAC地址和目的MAC地址 3. 认识端口号 4. 理解源端口号和目的端口号 5. 端口号&#xff08;port&#xff09; vs 进程pid 6. 认识TCP协议和认识UDP协议 7. 网络字节序 socket编程接口 1. socket 常见API 2. sock…

C++ STL详解:map

目录 一、map的使用 1.1map模板参数 1.2map的构造函数及迭代器 1.3map的容量与元素访问 1.4map中的增删查改 二、日常实操 一、map的使用 CSTL详解&#xff1a;set 通过对set的简单了解&#xff0c;我们可以知道&#xff0c;set就类似于二叉搜索树的key模型&#xff0c;…

黑马程序员-瑞吉外卖-day8

目录 菜品新增 菜品代码准备&#xff1a; 1.entity 2.mapper 3.service 4.sevice目录下的impl目录 5.controller 菜品口味代码准备&#xff1a; 1.entity 2.mapper 3.service 4.sevice目录下的impl目录 菜品新增 分析&#xff1a; 后台系统中可以管理菜品信息&…

医用软管用双轴测径仪 外径与椭圆度的双重检测!

摘要&#xff1a;软管的一大特点就是容易产生形变&#xff0c;接触式测量稍施压力可能导致测量不准&#xff0c;因此非接触式的高精高速测径仪被广泛的应用于生产中。 关键词&#xff1a;双轴测径仪,医用软管测径仪,软管测径仪,测径仪,软管外径测量仪 引言 非接触式的外径测量仪…

【监控】spring actuator源码速读

目录 1.前言 2.先搂一眼EndPoint 3.EndPoint如何被注入 4.EndPoint如何被暴露 4.1.如何通过http暴露 4.2.如何通过jmx暴露 5.EndPoint是怎么实现监控能力的 6.知道这些的意义是什么 1.前言 版本&#xff1a;spring-boot-starter-actuator 2.6.3 阅读源码一定要带着疑…

【Gitea】配置 Push To Create

引 在 Git 代码管理工具使用过程中&#xff0c;经常需要将一个文件夹作为仓库上传到一个未创建的代码仓库。如果 Git 服务端使用的是 Gitea&#xff0c;通常会推送失败。 PS D:\tmp\git-test> git remote add origin http://192.1.1.1:3000/root/git-test.git PS D:\tmp\g…

LabVIEW智能家居控制系统

LabVIEW智能家居控制系统 介绍了一个基于LabVIEW的智能家居控制系统的开发过程。该系统利用LabVIEW软件与硬件设备相结合&#xff0c;通过无线网络技术实现家居环境的实时监控与控制&#xff0c;提升居住舒适度和能源使用效率。 项目背景&#xff1a;随着科技的发展和生活水平…

OpenAI超级视频模型Sora技术报告解读,虚拟世界涌现了

昨天白天&#xff0c;「现实不存在了」开始全网刷屏。 「我们这么快就步入下一个时代了&#xff1f;Sora简直太炸裂了」。 「这就是电影制作的未来」&#xff01; 谷歌的Gemini Pro 1.5还没出几个小时的风头&#xff0c;天一亮&#xff0c;全世界的聚光灯就集中在了OpenAI的So…

milvus insert api的数据结构源码分析

insert api的数据结构 一个完整的insert例子: import numpy as np from pymilvus import (connections,FieldSchema, CollectionSchema, DataType,Collection, )num_entities, dim 10, 3print("start connecting to Milvus") connections.connect("default&q…

基于51单片机的智能台灯的设计与实现

摘 要:针对青少年因坐姿不正确、灯光亮度不合适、用眼过度等原因易导致的近视问题,文中提出使用51单片机作为主控制单元,选用红外检测、光敏检测、蓝牙通信、蜂鸣器和模数转换等模块,设计了一款智能台灯。该智能台灯具有节能、预防近视等功能。经测试,该台灯具有保护视力的…

DS Wannabe之5-AM Project: DS 30day int prep day20

Q1. Do you have any idea about Event2Mind in NLP? Yes, it is based on NLP research paper to understand the common-sense inference from sentences. Event2Mind: Common-sense Inference on Events, Intents, and Reactions The study of “Commonsense Reasoning”…

openAI的视频技术Sora背后:奥特曼清单法

hello家人们...本人熟悉PS、Xd、Ai、Sketch、Figma、墨刀、即时设计、mastergo、Pixso等行业设计软件以及前端开发等技能&#xff0c;拥有10年的UI经验&#xff0c;我们可以通过关注评论私信交流以帮助到您解决UI工作中的烦恼&#xff01;谢谢 OpenAI的视频技术Sora背后&#x…

小型洗衣机哪个牌子质量好?小型洗衣机十大排名

清洗内衣内裤这些贴身衣物确实是一件比较头疼的事&#xff0c;有的小伙子由于工作的劳累通常在洗完澡后并不喜欢直接清洗内衣内裤&#xff0c;会存上几天再扔到洗衣机里&#xff0c;这样做是很不可取的&#xff0c;因为穿过的内裤很久不洗就会滋生细菌&#xff0c;另外&#xf…

Linux基础IO【文件系统】

目录 1.磁盘文件 2.磁盘概念 2.1基本结构 2.2数据存储 3磁盘信息 3.1块组信息 4.文件操作 4.1文件创建 4.2文件访问 4.3对文件增删查改 4.4大文件存储 总结&#xff1a; 1.磁盘文件 在计算机中&#xff0c;没有被打开的文件都是静静的躺在外存&#xff08;磁盘…

《富爸爸:巴比伦最富有的人》读书笔记

目录 作者简介 感悟 经典摘录 观点&#xff1a; 支付给自己(理解是投资自己) 观点&#xff1a;源源不断地放入金币 观点&#xff1a; 把收入的一部分留给我自己 观点&#xff1a; 从专业的人士得到建议 观点&#xff1a;一旦为自己规定了任务&#xff0c;就一定要完成 …

如何修复Microsoft Edge不能以全屏模式打开​?这里提供几个故障排除方法

随着越来越多的Windows 10用户将Edge设置为默认浏览器&#xff0c;各种错误和小故障层出不穷。例如&#xff0c;许多用户抱怨他们无法在全屏模式下启动Edge。如果你正在寻找解决方案来解决这个恼人的问题&#xff0c;请按照下面的故障排除步骤进行操作。 修复Microsoft Edge不…

[Flink01] 了解Flink

Flink入门系列文章主要是为了给想学习Flink的你建立一个大体上的框架&#xff0c;助力快速上手Flink。学习Flink最有效的方式是先入门了解框架和概念&#xff0c;然后边写代码边实践&#xff0c;然后再把官网看一遍。 Flink入门分为四篇&#xff0c;第一篇是《了解Flink》&…

SaaS系统介绍

本文系个人学习笔记&#xff0c;内容来源于资料整合及个人理解。 1. 概念介绍 SaaS系统英文全称为Software as a Service&#xff08;软件即服务&#xff09;&#xff0c;通俗来讲就是提供固定功能的在线软件。从宏观上看&#xff0c;SaaS有三大特点&#xff1a; 1. 用户无需…

【Java程序员面试专栏 Java领域】Java并发 核心面试指引

关于Java 并发部分的核心知识进行一网打尽,主要包括Java为什么会有并发问题,并发问题的解决方案,到最后的锁和JUC包的解决方案,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 基础概念 关于并发与并行,Java的内存模型,以及并发编程…

VScode主题推荐-个人使用

在介绍主题之前&#xff0c;先看一下怎么在 VS Code 中切换主题。VS Code 提供了便捷的快捷命令面板&#xff0c;里边各种常用的主题都可以搜索到&#xff0c;包括更换主题。打开快捷命令面板的快捷键是&#xff1a; Command/Ctrl shift p 下载安装主题需要打开VScode&…