LeetCode-055-跳躍游戲

題目描述:給定一個(gè)非負(fù)整數(shù)數(shù)組 nums ,你最初位于數(shù)組的 第一個(gè)下標(biāo) 。
數(shù)組中的每個(gè)元素代表你在該位置可以跳躍的最大長(zhǎng)度。
判斷你是否能夠到達(dá)最后一個(gè)下標(biāo)。
示例說明請(qǐng)見LeetCode官網(wǎng)。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/jump-game/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:窮舉法
首先,如果nums的長(zhǎng)度為1,則直接返回true;
當(dāng)不是前兩種情況時(shí),首先,聲明一個(gè)變量length為數(shù)組最大的索引位,聲明一個(gè)HashSet為jumped記錄跳躍過的位置,聲明一個(gè)隊(duì)列toJump記錄當(dāng)前走到的位置,首先,將索引位0加入到j(luò)umped和toJump,然后遍歷隊(duì)列toJump按照以下過程處理:
從隊(duì)列中取出一位cur,并將之加入到j(luò)umped中;
如果cur對(duì)應(yīng)的數(shù)組的值為0,則跳過處理下一個(gè)隊(duì)列中的值;
如果cur對(duì)應(yīng)的數(shù)組的值大于等于
lengt-cur
即可以從當(dāng)前位置直接跳躍到最后一位,則直接返回true;否則,將cur之后
nums[cur]
位的索引位加入到toJump,加入前需要判斷是否在jumped和toJump已經(jīng)存在,如果存在,避免重復(fù)處理,跳過,然后處理下一個(gè)隊(duì)列中的值。最后,如果隊(duì)列為空了還沒有跳到數(shù)組的最后一位,則返回false。
【每日寄語】 好的運(yùn)氣從清晨開始,愿你晨起有微笑,笑里有幸福。