題目鏈結
給你乙個下標從 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 步到達最後乙個位置。示例二 輸入 ...