跳躍數字
題目要求
給定一個非負整數陣列,你最初位於陣列的第一個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達陣列的最後一個位置。
示例:
輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最後一個位置的最小跳躍數是 2。
從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步到達陣列的最後一個位置。
說明:
假設你總是可以到達陣列的最後一個位置。
解題思路
1.臨界情況,當陣列只有一個元素的時候,根據題目要求則直接返回0。
2.一般情況,從當前位置看,如果當前位置的下標+當前位置的值,小於陣列的總長度-1(也就是陣列所能表示的最大下標值,最後一個陣列元素的下標),則繼續尋找下一個步驟的落腳點
2.1考慮到找尋下一個位置,不妨重新回到題目中,題目中的已知條件有(陣列中的每個元素代表你在該位置可以跳躍的最大長度。)則我們需要挑選的值主要在當前位置的值的範圍內中選擇
2.2選擇條件是,在當前位置值的範圍中挑選出能夠跨越最大的元素,最為下一個跳腳點。原因就是陣列中的每個元素代表你在該位置可以跳躍的最大長度。
程式碼演示:
class Solution {
public int jump(int[] nums) {
int len=nums.length;
int k=0;//記錄下標的位置,初始的位置是0
int i;//迴圈的起始位置
int max=0;
int mid=0;//記錄中間變數
int res=0;
if(len==1)
return 0;
while (k+nums[k]<len-1)
{
max=nums[k+1]+k+1;
for(i=1;i<=nums[k];i++)
{
if(nums[k+i]+k+i>=max)
{
max=nums[k+i]+k+i;
mid=k+i;
}
}
k=mid;
res++;
}
return res+1;
}
}
效果展示
info
解答成功:
執行耗時:2 ms,擊敗了93.98% 的Java使用者
記憶體消耗:40.4 MB,擊敗了86.98% 的Java使用者
相關文章
- 圈圈跳躍
- 跳躍遊戲遊戲
- redis 跳躍表Redis
- [Leetcode]44.跳躍遊戲Ⅰ&&45.跳躍遊戲ⅡLeetCode遊戲
- 並查集跳躍並查集
- 玩家角色——角色跳躍
- 貪心——55. 跳躍遊戲 && 45.跳躍遊戲II遊戲
- 0055-跳躍遊戲遊戲
- 走近原始碼:Redis跳躍列表究竟怎麼跳原始碼Redis
- 機器人跳躍問題機器人
- 跳躍遊戲精細化遊戲
- leetcode 45. 跳躍遊戲 IILeetCode遊戲
- 55-jump Game 跳躍遊戲GAM遊戲
- Redis資料結構—跳躍表Redis資料結構
- 資料結構(一)--- 跳躍表資料結構
- Python複習筆記跳躍版Python筆記
- Unity3d 人物的跳躍Unity3D
- 【leetcode】45. Jump Game II 非負陣列的最少跳躍步數LeetCodeGAM陣列
- 試著跳一下?講講遊戲中的“跳躍”遊戲
- 資料結構:跳躍連結串列資料結構
- LeetCode 45跳躍遊戲&46全排列LeetCode遊戲
- Redis為什麼要使用跳躍表Redis
- Redis原始碼解析之跳躍表(一)Redis原始碼
- Redis原始碼解析之跳躍表(三)Redis原始碼
- “懂行人”合力共建“強富美高”數字經濟,助力千載金陵的數字一躍
- MySQL8.0之跳躍範圍掃描MySql
- Redis 的基礎資料結構(二) 整數集合、跳躍表、壓縮列表Redis資料結構
- 線上求助,有沒有大佬能講解一波redis 跳躍列表以及跳躍表的curd和元素排名Redis
- 「KTSC 2024 R2」跳躍遊戲 題解遊戲
- LeetCode 55. 跳躍遊戲 ( 回溯 dp 貪心LeetCode遊戲
- 【LeetCode】55. 跳躍遊戲 (動態規劃)LeetCode遊戲動態規劃
- 順序跳躍顯示陣列中的值陣列
- 資料結構與演算法---跳躍表資料結構演算法
- 從數字化到數智化 經濟社會發展新躍進BL
- 跳躍表資料結構與演算法分析資料結構演算法
- 【最完整系列】Redis-結構篇-跳躍列表Redis
- 圖解Redis之資料結構篇——跳躍表圖解Redis資料結構
- 【Java】跳躍表的實現以及用例測試Java