zoukankan      html  css  js  c++  java
  • leetcode55 Jump Game

     1 """
     2 Given an array of non-negative integers, you are initially positioned at the first index of the array.
     3 Each element in the array represents your maximum jump length at that position.
     4 Determine if you are able to reach the last index.
     5 Example 1:
     6 Input: [2,3,1,1,4]
     7 Output: true
     8 Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.
     9 Example 2:
    10 Input: [3,2,1,0,4]
    11 Output: false
    12 Explanation: You will always arrive at index 3 no matter what. Its maximum
    13              jump length is 0, which makes it impossible to reach the last index.
    14 """
    15 """
    16 自己AC。用一个dp数组来保存能否到达该位置
    17 """
    18 class Solution1:
    19     def canJump(self, nums):
    20         dp = [False]*len(nums)
    21         dp[0] = True
    22         temp2 = 0
    23         for i in range(len(nums)-1):
    24             if dp[i] == True:
    25                 temp1 = max(i+1, temp2) #如果这里写成temp1=i+1会超时,重复赋值了
    26                 temp2 = min(i+nums[i], len(nums)-1)
    27                 while temp1 <= temp2:
    28                     dp[temp1] = True
    29                     temp1 += 1
    30         return dp[-1]
    31 """
    32 解法二:从后向前遍历 O(n)解法
    33 """
    34 class Solution2:
    35     def canJump(self, nums):
    36         last = len(nums)-1
    37         i = last - 1
    38         while i >= 0:
    39             if(nums[i] + i) >= last:
    40                 last = i
    41             i -= 1
    42         return last <= 0
    43 
    44 if __name__ == '__main__':
    45     ans = Solution2()
    46     nums = [2, 3, 1, 1, 4]
    47     print(ans.canJump(nums))
  • 相关阅读:
    Thrift在微服务中的使用
    MySQL 必知必会
    IDEA 内使用 git
    分布式锁
    LeetCode 图
    LeetCode 位运算
    LeetCode 数组
    LeetCode 字符串
    LeetCode 哈希表
    LeetCode 栈和队列
  • 原文地址:https://www.cnblogs.com/yawenw/p/12489572.html
Copyright © 2011-2022 走看看