跳躍游戲系列題解

一氧卧、 leetcode 55 跳躍游戲

給定一個非負整數(shù)數(shù)組或舞,你最初位于數(shù)組的第一個位置淹办。數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個位置低葫。

示例 1:

輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然后再從位置 1 跳 3 步到達最后一個位置仍律。

示例 2:

輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣嘿悬,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 水泉, 所以你永遠不可能到達最后一個位置善涨。

解題思路:

  1. 如果某一個作為起跳點的格子可以跳躍的距離是3,那么表示后面3個格子都可以作為起跳點草则。
  2. 可以對每一個都能作為起跳點的格子都嘗試一次钢拧,把能跳到最遠的距離不斷更新。
  3. 如果可以一直跳到最后炕横,就返回true源内,如果在遍歷數(shù)組的過程中,發(fā)現(xiàn)當前數(shù)組下標大于所能到達的最遠距離看锉,那么直接返回false姿锭。
boolean canJump(int[] nums){
    int maxReach = 0;
    for(int i = 0; i < nums.length; i++){
        if(i > maxReach) return false;
        maxReach = Math.max(maxReach, nums[i] + i);
    }
    return true;
}

二、leetcode 45 跳躍游戲 II

給定一個非負整數(shù)數(shù)組伯铣,你最初位于數(shù)組的第一個位置呻此。數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數(shù)到達數(shù)組的最后一個位置腔寡。

示例:

輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最后一個位置的最小跳躍數(shù)是 2焚鲜。從下標為 0 跳到下標為 1 的位置,跳 1 步放前,然后跳 3 步到達數(shù)組的最后一個位置忿磅。

解題思路:

  1. 如果某一個作為起跳點的格子可以跳躍的距離是3,那么表示后面3個格子都可以作為起跳點凭语。
    • 可以對每一個能作為起跳點的格子都嘗試跳一次葱她,把能跳到最遠的距離不斷更新。
  2. 如果從這個起跳點起跳叫做第1次跳躍似扔,那么從后面3個格子起跳都可以叫做第2次跳躍吨些。
  3. 所以搓谆,當一次跳躍結(jié)束時,從下一個格子開始豪墅,到現(xiàn)在能跳到最遠的距離泉手,都是下一次跳躍的起跳點。
    • 對每一次跳躍for循環(huán)來模擬
    • 跳完一次之后偶器,更新下一次起跳點的范圍
    • 在新的范圍內(nèi)跳斩萌,更新能跳到最遠的距離
  4. 記錄跳躍次數(shù),如果跳到了終點屏轰,就得到了結(jié)果颊郎。
public int jump(int[] nums){
    int start = 0;
    int end = 1;
    int ans = 0;
    while(end < nums.length){
        int maxPos = 0;
        for(int i = start; i < end; i++){
            maxPos = Math.max(maxPos, i + nums[i]);
        }
        start = end;
        end = maxPos + 1;
        ans++;
    }
    return ans;
}

三、leetcode 1306 跳躍游戲 III

這里有一個非負整數(shù)數(shù)組 arr亭枷,你最開始位于該數(shù)組的起始下標 start 處袭艺。當你位于下標i 處時,你可以跳到i + arr[i] 或者i - arr[i]叨粘。

請你判斷自己是否能夠跳到對應元素值為 0 的 任意 下標處猾编。

注意,不管是什么情況下升敲,你都無法跳到數(shù)組之外

示例 1:

輸入:arr = [4,2,3,0,3,1,2], start = 5
輸出:true
解釋:
到達值為 0 的下標 3 有以下可能方案:
下標 5 -> 下標 4 -> 下標 1 -> 下標 3
下標 5 -> 下標 6 -> 下標 4 -> 下標 1 -> 下標 3
示例 2:

輸入:arr = [4,2,3,0,3,1,2], start = 0
輸出:true
解釋:
到達值為 0 的下標 3 有以下可能方案:
下標 0 -> 下標 4 -> 下標 1 -> 下標 3
示例 3:

輸入:arr = [3,0,2,1,2], start = 2
輸出:false
解釋:無法到達值為 0 的下標 1 處答倡。

思路:

深度優(yōu)先遍歷,依賴一個visited數(shù)組驴党,用以記錄已經(jīng)訪問過的位置

class Solution {

    public boolean canReach(int[] arr, int start) {
        boolean[] visited = new boolean[arr.length];
        return search(arr, start, visited);
    }

    private boolean search(int[] arr, int start, boolean[] visited){
        if(start < 0 || start >= arr.length || visited[start]) return false;
        if(arr[start] == 0) return true;
        visited[start] = true;
        return search(arr, start+arr[start], visited) || search(arr, start-arr[start], visited);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘪撇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子港庄,更是在濱河造成了極大的恐慌倔既,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鹏氧,死亡現(xiàn)場離奇詭異渤涌,居然都是意外死亡,警方通過查閱死者的電腦和手機把还,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門实蓬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吊履,你說我怎么就攤上這事安皱。” “怎么了艇炎?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵酌伊,是天一觀的道長。 經(jīng)常有香客問我缀踪,道長居砖,這世上最難降的妖魔是什么燕锥? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮悯蝉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘托慨。我一直安慰自己鼻由,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布厚棵。 她就那樣靜靜地躺著蕉世,像睡著了一般。 火紅的嫁衣襯著肌膚如雪婆硬。 梳的紋絲不亂的頭發(fā)上狠轻,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音彬犯,去河邊找鬼向楼。 笑死,一個胖子當著我的面吹牛谐区,可吹牛的內(nèi)容都是我干的湖蜕。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼宋列,長吁一口氣:“原來是場噩夢啊……” “哼昭抒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起炼杖,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤灭返,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坤邪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熙含,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年罩扇,在試婚紗的時候發(fā)現(xiàn)自己被綠了婆芦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂饥,死狀恐怖消约,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情员帮,我是刑警寧澤或粮,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站捞高,受9級特大地震影響氯材,放射性物質(zhì)發(fā)生泄漏渣锦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一氢哮、第九天 我趴在偏房一處隱蔽的房頂上張望袋毙。 院中可真熱鬧,春花似錦冗尤、人聲如沸听盖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皆看。三九已至,卻和暖如春背零,著一層夾襖步出監(jiān)牢的瞬間腰吟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工徙瓶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毛雇,地道東北人。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓倍啥,卻偏偏與公主長得像禾乘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子虽缕,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361