#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return bool布尔型
#
class Solution:
    def canJump(self , nums ):
        # write code here
        #思路
        ##dp[i] 代表是否能跳到
        ##如果能,那么dp[i] 为True,最后判断dp[n - 1]是不是True

        #init
        dp = [0 for i in range(0, len(nums))]
        dp[0] = True
        print ("dp: ", dp)
        right_bound = 0
        #process
        ret = False
        for i in range(0, len(nums)):
            #right_bound = i + nums[i]
            if right_bound < i:
                return False 
            if right_bound > len(nums) - 1:
                return True
            right_bound = max(right_bound, i + nums[i])
                
                #right_bound = min(i + nums[i], len(nums) - 1)
                #for j in range(i, right_bound + 1):
                #    dp[j] = True 
        #print ("Dp: ", dp)
        return True