首页 > 编程语言 >day53 动态规划part10 代码随想录算法训练营 121. 买卖股票的最佳时机

day53 动态规划part10 代码随想录算法训练营 121. 买卖股票的最佳时机

时间:2024-03-03 15:00:49浏览次数:34  
标签:cur min part10 随想录 121 最佳时机 prices 代码 dp

题目:121. 买卖股票的最佳时机

我的感悟:

  • so easy 
  • 打印dp确实能发现问题

理解难点:

  • 注意条件,及时更新dp

听课笔记:

  • 看了,老师的代码,感觉没有我的简洁,哈哈!!

我的代码:

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        # 设dp[i] 为截止到当前能获得的最大利润
        # cur_min 为截止到当前股票的最低价格
        dp = [0] * len(prices)
        cur_min = prices[0]
        for i in range(1,len(prices)):
            if prices[i] >= cur_min: # 如果当前的价格大于最小值记录下利润
                dp[i] = max(prices[i] - cur_min,dp[i-1])
            else:   # 如果价格低于最小值,更新最小值
                cur_min = prices[i]
                dp[i] = dp[i-1]    # 沿用上一次的最大值
        # print(dp)
        return dp[-1]

通过截图:

老师代码:

 

扩展写法:

资料:

  1. 买卖股票的最佳时机 

视频讲解:https://www.bilibili.com/video/BV1Xe4y1u77q

https://programmercarl.com/0121.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.html

标签:cur,min,part10,随想录,121,最佳时机,prices,代码,dp
From: https://www.cnblogs.com/liqi175/p/18050055

相关文章

  • day52 动态规划part9 代码随想录算法训练营 337. 打家劫舍 III
    题目:337.打家劫舍III我的感悟:跳过,目前树的不学理解难点:树的理解,以及树的遍历听课笔记:我的代码:通过截图:老师代码:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#......
  • day52 动态规划part9 代码随想录算法训练营 213. 打家劫舍 II
    题目:213.打家劫舍II我的感悟:看了题解不难,就是环这个思路转化很重要!理解难点:环的转化为,首,尾。代码上面可以省略长度为2的校验听课笔记:分3中情况:不考虑首尾|考虑首|考虑尾而情况2和情况3包含了情况1我的代码:classSolution:defrob(self,nums:List[i......
  • 3121005947
    这个作业属于哪个课程软件工程2024-双学位(广东工业大学)这个作业要求在哪里软件工程第一次作业这个作业的目标学习Markdown语言、撰写博客目录软件工程第一次作业1.评估自己1.1个人介绍1.2当前值1.3项目经历2.展望未来2.1阅读《构建之法》2.2未来的职......
  • 代码随想录 第11天 | 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150.
    Leetcode:20.有效的括号-力扣(LeetCode)思路:就是用栈存左右括号,都为0就说明true,不为零说明有没有匹配成功的括号,是false,思路没有问题,时间超时了,还得用C++...,java更好的思路如下:如果是左括号,push右括号,如果是右括号,判断是否与栈顶元素匹配,JAVA//deque.isEmpty();这个方法返回......
  • 数组(基于代码随想录)的随笔
    数组数组基础知识数组是存放在连续内存空间上的相同类型数据的集合。数组的元素是不能删的,只能覆盖。那么二维数组在内存的空间地址是连续的么?Java的二维数组在内存中不是3*4的连续地址空间,而是四条连续的地址空间组成!数组的经典题目二分法二分法时间复杂度:O(logn)......
  • 代码随想录算法训练营第三十四天| ● 860.柠檬水找零 ● 406.根据身高重建队列 ●
    柠檬水找零 题目链接:860.柠檬水找零-力扣(LeetCode)思路:注意对于20元的情况,有两种找零方式,            头一次见到这种情况,随便加一个标准输出才能通过的样例。classSolution{public:boollemonadeChange(vector<int>&bills){in......
  • 代码随想录算法训练营day11 | leetcode 20. 有效的括号、1047. 删除字符串中的所有相
    目录题目链接:20.有效的括号-简单题目链接:1047.删除字符串中的所有相邻重复项-简单题目链接:150.逆波兰表达式求值-中等题目链接:20.有效的括号-简单题目描述:给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右......
  • 代码随想录 第十天 | ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈
    队列的方法:添加元素:add(Ee):将指定的元素添加到队列的尾部,如果队列已满则抛出异常。offer(Ee):将指定的元素添加到队列的尾部,如果队列已满则返回false。移除元素:remove():移除并返回队列的头部元素,如果队列为空则抛出异常。poll():移除并返回队列的头部元素,如果......
  • 代码随想录 第九天 | 烤馍片(kmp)算法 ●28. 实现 strStr() ●459.重复的子字符串
    烤馍片算法(kmp):为了不让遍历的指针回退,每次不相等的时候找不相等之前的字符串的最长相等前后缀。i表示目标字符串,j表示需要在目标找到的字符串的指针。最长相等前后缀的长度就是之前有多少个与needle字符串相同,直接将j跳到上一元素位置记录的最长相等前后缀长度(next数组),这样i就可以......
  • 代码随想录算法训练营第三十三天 | 135. 分发糖果, 134. 加油站, 1005.K次取反后最大化
      1005.K次取反后最大化的数组和 已解答简单 相关标签相关企业 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下......