LeetCode 1340 跳躍遊戲 V(DP)

2021-10-02 12:19:45 字數 1749 閱讀 2548

給你乙個整數陣列 arr 和乙個整數 d 。每一步你可以從下標 i 跳到:

除此以外,你從下標 i 跳到下標 j 需要滿足:arr[i] > arr[j] 且 arr[i] > arr[k],其中下標 k 是所有i 到 j 之間的數字(更正式的,min(i, j) < k < max(i, j))。

你可以選擇陣列的任意下標開始跳躍。請你返回你最多可以訪問多少個下標。

請注意,任何時刻你都不能跳到陣列的外面。

示例 1:

輸入:arr =[6

,4,14

,6,8

,13,9

,7,10

,6,12

], d =

2輸出:4

解釋:你可以從下標 10 出發,然後如上圖依次經過 10

-->8--

>6--

>

7 。注意,如果你從下標 6 開始,你只能跳到下標 7 處。你不能跳到下標 5 處因為 13

>

9 。你也不能跳到下標 4 處,因為下標 5 在下標 4 和 6 之間且 13

>

9 。類似的,你不能從下標 3 處跳到下標 2 或者下標 1 處。

示例 2:

輸入:arr =[3

,3,3

,3,3

], d =

3輸出:1

解釋:你可以從任意下標處開始且你永遠無法跳到任何其他座標。

示例 3:

輸入:arr =[7

,6,5

,4,3

,2,1

], d =

1輸出:7

解釋:從下標 0 處開始,你可以按照數值從大到小,訪問所有的下標。

示例 4:

輸入:arr =[7

,1,7

,1,7

,1], d =

2輸出:2

示例 5:

輸入:arr =[66

], d =

1輸出:1 1

<= arr.length <=

1000

1<= arr[i]

<=10^

51<= d <= arr.length

相關題目:

leetcode 55. 跳躍遊戲(貪心)

leetcode 45. 跳躍遊戲 ii(貪心/bfs,難)

leetcode 1306. 跳躍遊戲 iii(廣度優先搜尋bfs)

leetcode 1345. 跳躍遊戲 iv(bfs)

leetcode lcp 09. 最小跳躍次數

class

solution

for(j = idx+

1; j <= idx+d && j

> arr[j]

; j++)}

return

*max_element

(dp.

begin()

,dp.

end())

;//取最大值}}

LeetCode 1340 跳躍遊戲 V

把每乙個位置看作圖上的乙個點,是乙個有向無環圖,因為必須向比當前位置的高度低的地方跳,不能反過來跳。就是求一條最長路徑。對於每乙個點來說,由於是有向無環圖,它的最長路徑是確定的,所以我們可以記錄每乙個點的最長路徑,加快dfs,複雜度o n class solution record u ans 1 ...

leetcode 1340 跳躍遊戲 V

給你乙個整數陣列 arr 和乙個整數 d 每一步你可以從下標 i 跳到 i x 其中 i x arr.length 且 0 x d i x 其中 i x 0 且 0 x d 除此以外,你從下標 i 跳到下標 j 需要滿足 arr i arr j 且 arr i arr k 其中下標 k 是所有 i ...

python lintcode116 跳躍遊戲

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