LeetCode 1696 跳躍遊戲 VI

2021-10-12 20:05:51 字數 1118 閱讀 6117

題目鏈結

給你乙個下標從 0

00 開始的整數陣列 num

snums

nums

和乙個整數 k

kk 。

一開始你在下標 0

00 處。每一步,你最多可以往前跳 k

kk 步,但你不能跳出陣列的邊界。也就是說,你可以從下標 i

ii 跳到 [i+

1,mi

n(n−

1,i+

k)

][i + 1, min(n - 1, i + k)]

[i+1,m

in(n

−1,i

+k)]

包含 兩個端點的任意位置。

你的目標是到達陣列最後乙個位置(下標為 n−1

n - 1

n−1 ),你的 得分 為經過的所有數字之和。

請你返回你能得到的 最大得分 。

輸入:nums =

[1,-1,-2,4,-7,3], k = 2

輸出:7

解釋:你可以選擇子串行 [1,-1,4,3] (上面加粗的數字),和為 7 。

輸入:nums =

[10,-5,-2,4,0,3], k = 3

輸出:17

解釋:你可以選擇子串行 [10,4,3] (上面加粗數字),和為 17 。

輸入:nums =

[1,-5,-20,4,-1,3,-6,-3], k = 2

輸出:0

這題很容易想到 dp,但是 dp 的複雜度是 o(n

k)

o(nk)

o(nk

) 的,顯然會超時,所以我們要用一種資料結構快速找到 [i−

k,i−

1]

[i-k,i-1]

[i−k,i

−1] 的最大值,顯然容易想到單調佇列,用乙個單調佇列維護區間,隊首即為最大值,再結合 dp 即可,ac**如下:

class

solution

return dp[nums.

size()

-1];

}};

python lintcode116 跳躍遊戲

給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。這個問題有兩個方法,乙個是貪心和動態規劃。貪心方法時間複雜度為o n 動態規劃方法的時間複雜度為為o n 2 我們手動設定小型資料集,使大家可以通過測試的兩種方...

LeetCode 跳躍遊戲

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。示例 2 輸入 3,2,1,0,4 輸出 fa...

leetcode 跳躍遊戲

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達 位置 1,然後再從位置 1 跳 3 步到達最後乙個位置。示例二 輸入 ...