首页 > 编程语言 >代码随想训练营第三十二天(Python)| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

代码随想训练营第三十二天(Python)| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II

时间:2023-11-13 16:11:17浏览次数:38  
标签:distance return 游戏 nums int II prices 跳跃 dp

122.买卖股票的最佳时机 II
1、贪心

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        res = 0
        for i in range(1, len(prices)):
            res += max(prices[i]-prices[i-1], 0)
        return res

2、动态规划

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n = len(prices)
        # 第一列代表第几天,第二列代表是否持有股票
        dp = [[0] * 2 for _ in range(n)]
        # 0 代表持有股票, 1 代表不持有股票
        dp[0][0] = -prices[0]
        dp[0][1] = 0
        for i in range(1, n):
            dp[i][0] = max(dp[i-1][0], dp[i-1][1]-prices[i])
            dp[i][1] = max(dp[i-1][1], dp[i-1][0]+prices[i])
        return dp[-1][1]

55. 跳跃游戏

class Solution:
    def canJump(self, nums: List[int]) -> bool:
        cover = 0 # 每个位置可以覆盖的范围
        n = len(nums)
        if n == 1:
            return True
        for i in range(n):
            if i <= cover:
                cover = max(cover, nums[i]+i)
                if cover >= n-1:
                    return True
        return False

45.跳跃游戏 II
1、走一步看一步

class Solution:
    def jump(self, nums: List[int]) -> int:
        n = len(nums)
        if n == 1:
            return 0

        cur_distance = 0 # 当前覆盖的最远距离
        res = 0 # 移动的步数
        next_distance = 0 # 下一步覆盖的最远距离
        for i in range(n):
            next_distance = max(nums[i]+i, next_distance)
            if i == cur_distance:
                res += 1 # 需要移动下一步
                cur_distance = next_distance # 更新当前可以移动的最远距离
                if next_distance >= n - 1:   
                    break
        return res

2、动态规划

class Solution:
    def jump(self, nums: List[int]) -> int:
        n = len(nums)
        # 初始化数组, 每个位置需要多少步到
        dp = [10**4+1] * n
        dp[0] = 0

        for i in range(n): # 遍历数组
            for j in range(nums[i]+1): # 遍历覆盖范围
                if i + j < n: # 避免走出数组范围
                    dp[i+j] = min(dp[i+j], dp[i]+1)
        return dp[-1]

标签:distance,return,游戏,nums,int,II,prices,跳跃,dp
From: https://www.cnblogs.com/yixff/p/17825083.html

相关文章

  • PG游戏库大师的选择?分析师透露明年iPad全新6款机型,史上最大屏iPad Air领衔
    苹果今年罕见未发布任何新平板,引起PGSOFT科技电子外界对2024年iPad系列的高度关注。最新消息透露,明年上半年至下半年将陆续推出四大新系列,包括入门iPad、iPadmini、高阶iPadAir和旗舰iPadPro,共6款机型。除了芯片性能升级外,高阶iPadPro将进行屏幕面板升级,或带来一波价格涨幅。分......
  • USB(2.0 / Type-C) to MPSSE(JTAG / SPI / IIC) / UART / FIFO: FTDI 的FT4232H配成SP
    Ti60Demo板FT4232H串口使用易灵思FPGA技术交流2022-04-1508:43Ti60F225demo板使用的是FT4232H,有4个通道A,B,C和D。其中A通道用于SPI接口,可以是AS也可以是PS。通道B用于JTAG,通道C连接了UART,通道D连接了FX3。A,B,C和D四个通道分别对应Zadig中的TitraniumTi60F225develo......
  • 电竞游戏盛典风云:《塞尔达传说》之外,PG玩家票选「金手柄奖」巨星横扫7项大奖
    2023年度最佳游戏由英国「金手柄奖」揭晓,成为最大赢家的是Larian工作室的《柏德之门3》。这款RPG游戏在本次颁奖礼上横扫七项大奖,包括「终极年度游戏」、「最佳PC游戏」、「最佳叙事」、「最佳视觉设计」、「最佳游戏社群」、「最佳配角」和「年度最佳工作室」。《柏德之门3》被认......
  • 热门游戏网游推荐网站的设计与开发-计算机毕业设计源码+LW文档
    摘要热门网游推荐网站是一个利用JAVA技术建设的网上管理系统,在热门网游推荐管理中实现信息化。系统的设计就是为了迎合广大用户需求而创建的一个界面简洁、有定向内容、业务逻辑简单易操作的热门网游推荐网站。本文以热门网游推荐为例,提出了利用JAVA技术设计和实现热门网游推荐......
  • P1129 [ZJOI2007] 矩阵游戏
    挺喜欢的一题。首先我们很容易观察到一个性质:每一行和每一列上的黑色方格的数量是不变的,只能改变它在那一行和那一列的排列顺序。由此若是有某一行或某一列上没有黑色方格,直接输出No即可。此时我们考虑的情况就是每一行和每一列上至少都会有一个黑色方格。这时有一个结论:若有......
  • 三子棋游戏
    1.tese.()#define_CRT_SECURE_NO_WARWINGS#include"game.h"voidmenu(){ printf("************************\n"); printf("*****1.play 0.exit*****\n"); printf("************************\n");}//// | |  //--......
  • unity开发——打飞碟小游戏
    unity开发——打飞碟小游戏目录unity开发——打飞碟小游戏项目地址游戏规则及要求规则要求设计模式讲解代码剖析伪代码DiskDiskDataIUserActionIActionManagerCCActionManagerPhysisFlyActionPhysisActionManagerScoreRecorderUserGUI项目地址https://github.com/goodhuahua/un......
  • PHP反序列化题型_YII框架漏洞利用
    ctfshowweb267通过页面加载yii.js判断使用yii框架。用弱口令admin/admin可登录在about页面发现提示view-source访问提示页面?r=site%2Fabout&view-source页面提示///backdoor/shellunserialize(base64_decode($_GET['code']))因此构造payload必须先base64_encode再serializepayloa......
  • 简易版扫雷游戏的实现(可能)
    其实我没怎么玩过这游戏,除了在古早的xp系统上见到过内置的扫雷软件外,稍微玩过几把后就体验到了脑补雷的位置并推断地雷的位置是一件多么烧脑的事情,遂放弃了。其实我更喜欢玩蜘蛛纸牌。好了废话就讲这几句=-=嗯,首先,我们要知道扫雷游戏是怎么实现的呢?下面来看一张图:这个是微软出品的......
  • 牛客[编程题] HJ44 Sudoku数独游戏
    HJ44Sudoku困难  通过率:27.56%  时间限制:1秒  空间限制:32M 描述问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个3X3粗线宫内的数字均含1-9,并且不重复。例如:输......