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

LeetCode 第三十一天 2024.8.18

1. :买卖股票的最佳时机
 题目链接: 121. 买卖股票的最佳时机 - 力扣(LeetCode)
应用条件:

难点:

# 确定dp数组(dp table)以及下标的含义:dp数组由len(prices)个[][]组成,dp[i][0] 表示在第i天持有股票所有的现金,dp[i][1]表示在第二天不持有股票所有的现金
# 确定递推公式:  如果第i天持有股票即dp[i][0], 那么可以由两个状态推出来:
# 第i-1天就持有股票,那么就保持现状,所得现金就是昨天持有股票的所得现金 即:dp[i - 1][0]
# 第i天买入股票,所得现金就是买入今天的股票后所得现金即:-prices[i]
# 那么dp[i][0]应该选所得现金最大的,所以dp[i][0] = max(dp[i - 1][0], -prices[i]);
# 如果第i天不持有股票即dp[i][1], 也可以由两个状态推出来
# 第i-1天就不持有股票,那么就保持现状,所得现金就是昨天不持有股票的所得现金 即:dp[i - 1][1]
# 第i天卖出股票,所得现金就是按照今天股票价格卖出后所得现金即:prices[i] + dp[i - 1][0]
# 同样dp[i][1]取最大的,dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0]);
# dp数组如何初始化: dp[0][0] -= prices[0]; dp[0][1] = 0;
# 确定遍历顺序: for i in range(1, length)

个人错误:

我觉得这个比2难,dp数组不好想,贪心会简单些

思路:

class Solution:def maxProfit(self, prices: List[int]) -> int:length = len(prices)if length == 0:return 0dp = [[0] * 2 for _ in range(length)]dp[0][0] = -prices[0]dp[0][1] = 0for i in range(1, length):dp[i][0] = max(dp[i-1][0], -prices[i])dp[i][1] = max(dp[i-1][1], prices[i] + dp[i-1][0])return dp[-1][1]

贪心:

class Solution:def maxProfit(self, prices: List[int]) -> int:low = float("inf")result = 0for i in range(len(prices)):low = min(low, prices[i]) #取最左最小价格result = max(result, prices[i] - low) #直接取最大区间利润return result

2. :买卖股票的最佳时机II
 题目链接: 122. 买卖股票的最佳时机 II - 力扣(LeetCode)
应用条件:动态规划

难点:

# 确定dp数组(dp table)以及下标的含义:dp[i]表示在i天可以取得的最大金额
# 确定递推公式:  if price[i] > price[i-1]: dp[i] =dp[i-1]+(price[i] - price[i-1]) else:dp[i] = dp[i-1]
# dp数组如何初始化:  dp[0]=0 
# 确定遍历顺序: for i in range(1,len(nums)+1)

个人错误:

思路:

class Solution:def maxProfit(self, prices: List[int]) -> int:if len(prices) == 0 or len(prices) == 1:return 0dp = [0]*(len(prices))for i in range(1,len(prices)):if prices[i] > prices[i-1]:dp[i] =dp[i-1]+(prices[i] - prices[i-1])else:dp[i] = dp[i-1]print(dp)return dp[-1]

http://www.lryc.cn/news/427886.html

相关文章:

  • Linux驱动学习之点灯(一)
  • 从HTTP到HTTPS:SSL加密如何重塑互联网安全格局
  • QT网络编程: 实现UDP通讯设置
  • 机器学习第十一章--特征选择与稀疏学习
  • dm 到 dm 的 HS 同步部署
  • ShardingSphere、雪花算法、分布式id生成器CosID概述
  • hive学习(四)
  • UniAD_面向规划的自动驾驶
  • 《现代情报》
  • 2024年最新上榜的文件加密管理软件
  • Matplotlib库学习之scatter(模块)
  • 脑网络相似性:方法与应用
  • 【JavaEE】深入MyBatis:动态SQL操作与实战项目实现指南
  • Linux 实操-权限管理:深入了解rwx的作用
  • Linux 系统编程 --- day3
  • centos从home分区分配空间到根分区
  • 设计模式实战:即时通讯应用的设计与实现
  • 白骑士的C#教学实战项目篇 4.3 Web开发
  • 【数据分析】(交互) 延迟互信息(熵、概率密度、高斯核、带宽估计)
  • html转vue项目
  • .NET系列 定时器
  • 【Golang】火焰图空白部分是什么?
  • Web框架 --- 解析Web请求 [FromBody] [FromQuery] [FromRoute] [FromHeader]
  • Messari 摘要报告:Covalent Network(CXT)2024 Q2 品牌重塑、AI模块化数据、亚太地区扩展、代币回购计划和网络增长
  • Open3D 计算点云的面状指数
  • python下麦克风设备选择和录音
  • 云和集群有什么区别?
  • 无人机视角下的EasyCVR视频汇聚管理:构建全方位、智能化的AI视频监控网络
  • 数字影像技术是如何改变我们看待世界的方式呢?
  • Chainlit实现启动页面选择不同的LLM启动器等设置界面