href="http://ounix1xcw.bkt.clouddn.com/github.markdown.css" rel="stylesheet">
這是leetcode的第55題--jump game
題目
Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if you are able to reach the last index.
For example: A = [2,3,1,1,4], return true. A = [3,2,1,0,4], return false.
思路 由於只有非負數,不能成功的點一定是當前位置爲0,所以可以將列表中所以的0找出來,並記下位置(下標),然後從這個位置開始往前搜索,若存在能跳過此位置的點,則能跳過,去除這個0,一直跳過所有0
show me the code
class Solution(object): def canJump(self, nums): """ :type nums: List[int] :rtype: bool """ if len(nums) == 1: return True zeros = [] for i,j in enumerate(nums): if j == 0: zeros.append(i) while zeros != []: i = zeros[0] tmp = i - 1 flag = 0 while tmp >= 0: if nums[tmp] > i-tmp or nums[tmp] tmp 1 >=len(nums): flag = 1 break tmp -= 1 if flag == 0 : return False del zeros[0] return True