题目:55. Jump Game
题目描述:https://leetcode.com/problems/jump-game/description/
题目意思呢是说,给定一个非负整数序列,每一个元素代表了在该位置最多向后走的步数,起始位置为0,问能否到达终点?例如:序列[2,3,1,1,4]能够到达终点,返回True;序列[2,3,1,0,4]不能到达终点,返回False。
其实直接遍历就好啦,这次还是写了一个bfs,因为上次有个JumpGame2用bfs写的(∩_∩)
Python:
import Queue
class Solution(object):
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
length=len(nums)
if length==0:
return True
if length==1:
return True
if length<=nums[0]-1:
return True
vis=set()
def bfs(nums):
que=Queue.Queue()
que.put((nums[0],0))
res = False
vis.add(0)
rearPos=0
while not que.empty():
front=que.get()
if front[0]+front[1]>=length-1:
res=True
break
if front[0]+front[1]<=rearPos:
continue
for i in range(front[0]):
if front[1]+i+1 not in vis:
que.put((nums[front[1]+i+1],front[1]+i+1))
vis.add(front[1]+i+1)
rearPos=front[1]+i+1
return res
return bfs(nums)