LeetCode55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class Solution:
def canJump(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
dp = [0]*len(nums)
dp[0] = nums[0]
for i in range(1,len(nums)):
if dp[i-1]>=i:
dp[i] = max(dp[i-1],nums[i]+i)
else:
return False
return dp[len(nums)-1] >= len(nums)-1
LeetCode 45. 跳跃游戏 II
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class Solution(object):
def jump(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
res = 0
last,cur = 0,0
for i in range(n-1):
cur = max(cur,i+nums[i])
if i == last:
last = cur
res += 1
if cur > n-1:
break
return res
LeetCode134. 加油站
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。
如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。
说明:
- 如果题目有解,该答案即为唯一答案。
- 输入数组均为非空数组,且长度相同。
- 输入数组中的元素均为非负数。
1 | class Solution(object): |