Leetcode55-跳躍游戲

代碼1:(錯誤版)
class Solution:
def canJump(self, nums: List[int]) -> bool:
cur, left, right = 0, 0, 0
tmp = 0
while right < len(nums):
left = right + 1
right = cur + nums[cur]
if right >= len(nums) - 1:
return True
for i in range(left, right + 1):
if i + nums[i] > tmp:
tmp = i + nums[i]
cur = i
return False
錯誤原因:

此時left>right, 程式沒有退出while回圈,
修改為:
class Solution:
def canJump(self, nums: List[int]) -> bool:
cur, left, right = 0, 0, 0
tmp = 0
while right < len(nums):
left = right + 1
right = cur + nums[cur]
if left > right:
return False
if right >= len(nums) - 1:
return True
for i in range(left, right + 1):
if i + nums[i] > tmp:
tmp = i + nums[i]
cur = i
return False
報錯:

修改回圈條件為:while left < len(nums):
class Solution:
def canJump(self, nums: List[int]) -> bool:
cur, left, right = 0, 0, 0
tmp = 0
while left < len(nums):
left = right + 1
right = cur + nums[cur]
if left > right:
return False
if right >= len(nums) - 1:
return True
for i in range(left, right + 1):
if i + nums[i] > tmp:
tmp = i + nums[i]
cur = i
return False
當輸入為[0]時,left = 1, 超出了串列范圍,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338136.html
標籤:python
上一篇:為什么tabBarIcon無法導航到我的Tab.Screen中的組件?
下一篇:cc Toast
