leetcode Jump Game II 题解
2015-06-08 21:57
681 查看
逆推,从后往前开始。
每一次,都是寻找能到达本元素,同时与本元素距离最远的元素的位置。但是以下程序超时,各位朋友看一下,如何优化以下。
class Solution:
# @param {integer[]} nums
# @return {integer}
def jump(self, nums):
step = 0
self.step_ele = len(nums) - 1
self.num = copy.deepcopy(nums)
while self.step_ele > 0:
location = self.max_step(self.step_ele)
if location == -1:
return 0
self.step_ele = location
step += 1
return step
def max_step(self, location):
for i in range(location):
if i + self.num[i] >= location:
self.step_ele = i
return self.step_ele
return -1
正推法:从头开始寻找每一次遍历能达到的最远距离。
代码:
class Solution:
# @param {integer[]} nums
# @return {integer}
def jump(self, nums):
step = 0
left = 0
right = 0
if len(nums) == 1:
return 0
while left <= right:
step += 1
last_right = right
for i in range(left, right+1):
new_right = i + nums[i]
if new_right >= len(nums) - 1:
return step
if new_right > right:
right = new_right
left = last_right + 1
return 0
每一次,都是寻找能到达本元素,同时与本元素距离最远的元素的位置。但是以下程序超时,各位朋友看一下,如何优化以下。
class Solution:
# @param {integer[]} nums
# @return {integer}
def jump(self, nums):
step = 0
self.step_ele = len(nums) - 1
self.num = copy.deepcopy(nums)
while self.step_ele > 0:
location = self.max_step(self.step_ele)
if location == -1:
return 0
self.step_ele = location
step += 1
return step
def max_step(self, location):
for i in range(location):
if i + self.num[i] >= location:
self.step_ele = i
return self.step_ele
return -1
正推法:从头开始寻找每一次遍历能达到的最远距离。
代码:
class Solution:
# @param {integer[]} nums
# @return {integer}
def jump(self, nums):
step = 0
left = 0
right = 0
if len(nums) == 1:
return 0
while left <= right:
step += 1
last_right = right
for i in range(left, right+1):
new_right = i + nums[i]
if new_right >= len(nums) - 1:
return step
if new_right > right:
right = new_right
left = last_right + 1
return 0
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法
- Python实现的基于ADB的Android远程工具