題目連結:
題目意譯:
你被給定一個索引值從 0 開始數且包含 n 個整數的陣列 nums 以及一整數 target。
你一開始位於索引值 0。在一步之中,你可以從索引值 i 跳到任意索引值 j 並使得
0 ≦ i < j < n
-target ≦ nums[j] - nums[i] ≦ target
回傳抵達索引值 n - 1 你最多可以執行的跳躍次數。
如果不可能抵達索引值 n - 1。則回傳 -1。
限制:
2 ≦ nums.length == n ≦ 1000
-10 ^ 9 ≦ nums[i] ≦ 10 ^ 9
0 ≦ target ≦ 2 × 10 ^ 9
範例測資:
範例 1:
輸入: nums = [1,3,6,4,1,2], target = 2
輸出: 3
解釋: 為了用最多次跳躍從 0 跳到 n - 1,你可以執行以下跳躍順序:
- 從索引值 0 跳到索引值 1。
- 從索引值 1 跳到索引值 3。
- 從索引值 3 跳到索引值 5。
可以證明不會有其他跳法可以從 0 跳到 n - 1 並超過 3 次跳躍。因此答案為 3。
範例 2:
輸入: nums = [1,3,6,4,1,2], target = 3
輸出: 5
解釋: 為了用最多次跳躍從 0 跳到 n - 1,你可以執行以下跳躍順序:
- 從索引值 0 跳到索引值 1。
- 從索引值 1 跳到索引值 2。
- 從索引值 2 跳到索引值 3。
- 從索引值 3 跳到索引值 4。
- 從索引值 4 跳到索引值 5。
可以證明不會有其他跳法可以從 0 跳到 n - 1 並超過 5 次跳躍。因此答案為 5。
範例 3:
輸入: nums = [1,3,6,4,1,2], target = 0
輸出: -1
解釋: 可以證明不可能從 0 跳到 n - 1。因此答案為 -1。
解題思維:
跟
這題很像。只是本題中一個索引值能跳的位置取決於起點與目標兩者的數值差異,並且本題是最大化跳躍次數,而非最小化。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。