首页 > 其他分享 >[LeetCode] 55. Jump Game

[LeetCode] 55. Jump Game

时间:2024-07-03 14:45:23浏览次数:20  
标签:return nums 55 max self Jump start Game time

写了一个符和直觉的递归,时间超限了。

from typing import List
import time

class Solution:
    def canJump(self, nums: List[int]) -> bool:
        if len(nums) == 1:
            return True
        return self.isreach(nums, 0)

    def isreach(self, nums: List[int], start: int) -> bool:
        if start >= len(nums) - 1:
            return True

        furthest_jump = min(start + nums[start], len(nums) - 1)

        for next_position in range(start + 1, furthest_jump + 1):
            if self.isreach(nums, next_position):
                return True

        return False


def main():
    start_time = time.time()
    print(Solution().canJump([2,0,6,9,8,4,5,0,8,9,1,2,9,6,8,8,0,6,3,1,2,2,1,2,6,5,3,1,2,2,6,4,2,4,3,0,0,0,3,8,2,4,0,1,2,0,1,4,6,5,8,0,7,9,3,4,6,6,5,8,9,3,4,3,7,0,4,9,0,9,8,4,3,0,7,7,1,9,1,9,4,9,0,1,9,5,7,7,1,5,8,2,8,2,6,8,2,2,7,5,1,7,9,6]))
    end_time = time.time()
    print("Time taken: {:.6f} seconds".format(end_time - start_time))
    
if __name__ == '__main__':
    main()

False
Time taken: 148.563587 seconds

Process finished with exit code 0

改用贪心算法,使用max_reachable记录可达的最大list下标。

class Solution:
    def canJump(self, nums: List[int]) -> bool:
        #1
        if len(nums) ==1:
            return True
        #else
        max_reachable = 0
        for i,element in enumerate(nums):
            if i > max_reachable:
                return False
            max_reachable = max(i + element, max_reachable)
        return True

image

标签:return,nums,55,max,self,Jump,start,Game,time
From: https://www.cnblogs.com/alfredsun/p/18281585

相关文章

  • 151.翻转字符串里的单词 卡码网:55.右旋转字符串
    151.翻转字符串里的单词卡码网:55.右旋转字符串 151.翻转字符串里的单词题目链接:151.反转字符串中的单词-力扣(LeetCode) Code:classSolution{public:  stringreverseWords(strings){​    //单词级翻转,而不是单词内翻转  ​......
  • D - Intersecting Intervals(abc355)
    题意:有n个区间,找出俩俩区间相交的个数分析:设初始俩俩相交,找出不相交的(不同区间l>r),减去即可#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;intmain(){   ios::sync_with_stdio(false);   intn,l[n+10],r[n+10];   cin>>n;  ......
  • 海思3559 yolov5模型转wk详细笔记
    文章目录   前言   1.编译caffer       1.1安装虚拟机       1.2安装caffer       1.3编译python接口   2.适应wk的yolov5模型训练       2.1下载yolov5-6.0项目源码       2.2安装yolov5-6.0运行环境       2.3修改......
  • 55、Flink 中使用 Java Lambda 表达式详解
    1)概述1.注意Flink支持对JavaAPI的所有算子使用Lambda表达式,但是,当Lambda表达式使用Java泛型时,需要显式地声明类型信息。2.示例和限制示例:map()函数使用Lambda表达式计算输入值的平方。不需要声明map()函数的输入i和输出参数的数据类型,因为Java编......
  • 555、基于51单片机的汽车灯控制器设计(刹车、倒车、雾霾)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能汽车灯控制器设计要求:1、汽车车尾左右两侧各有四盏灯:黄灯、红灯、雾灯、倒车照明灯,前面有照明灯(远光、近光)、黄灯、雾灯2、白天正常行驶时照......
  • 554、基于51单片机的跑步机(计价,4挡)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能跑步机计价器1、使用直流电机模拟跑步机运行2、设置4个速度档位,用户可以选择不同速度体验3、具有计费功能,单价可调二、Proteus仿真......
  • QOJ2376 Game on a Tree (树形 dp)
    QOJ2376GameonaTree树形dp因为题目限制对于两个人等价,所以朴素的,考虑将\(u\)与祖先和后代连边,构成一个新的无向图。那么题目就变成:在无向图中选一点,每一次操作就是走一步到新的点,谁先不能走,那么另一个人获胜。先说结论:当无向图有完美匹配时,后手胜,反之先手胜。证明:若有......
  • 代码随想录算法训练营第九天|151.翻转字符串里的单词,卡码网:55.右旋转字符串
    151.翻转字符串里的单词题目链接:151.反转字符串中的单词-力扣(LeetCode)题目要求是给定一个字符串,要求把里面的单词进行倒序输出,并且要删除里面多余的空格。我的第一种做法是把里面的字符串提取出来,然后倒序放入一个新的字符串中,这样空间复杂度会比较高,也AC了,但肯定不是最......
  • Day 30 | 122.买卖股票的最佳时机II、55. 跳跃游戏 、45.跳跃游戏II、 1005.K次取反后
    122.买卖股票的最佳时机II本题解法很巧妙,本题大家可以先自己思考一下然后再看题解,会有惊喜!https://programmercarl.com/0122.买卖股票的最佳时机II.html给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成......
  • [题解]AT_arc116_d [ARC116D] I Wanna Win The Game
    思路因为题目与二进制有关,考虑往二进制的方向思考。定义\(dp_{i,j}\)表示在所有的\(n\)个数中,当前在决策对于每一个数在二进制表示下的第\(i\)位是\(0\)还是\(1\),且和为\(j\)的方案数。因为异或需要满足对于所有\(a_i\)表示为二进制后每一位\(1\)的个数均为偶数......