【LeetCode】45. 跳躍游戲 II

鏈接:https://leetcode-cn.com/problems/jump-game-ii/description/

給定一個(gè)非負(fù)整數(shù)數(shù)組,你最初位于數(shù)組的第一個(gè)位置挨约。

數(shù)組中的每個(gè)元素代表你在該位置可以跳躍的最大長度。

你的目標(biāo)是使用最少的跳躍次數(shù)到達(dá)數(shù)組的最后一個(gè)位置疏虫。

示例:

輸入: [2,3,1,1,4]
輸出: 2
解釋: 跳到最后一個(gè)位置的最小跳躍數(shù)是 2蚤假。
從下標(biāo)為 0 跳到下標(biāo)為 1 的位置,跳 1 步挖函,然后跳 3 步到達(dá)數(shù)組的最后一個(gè)位置。
說明:

假設(shè)你總是可以到達(dá)數(shù)組的最后一個(gè)位置彼念。

思路一:
利用動(dòng)態(tài)規(guī)劃的思路挪圾,構(gòu)建一個(gè)stepMatrix[]數(shù)組,保存到達(dá)每個(gè)位置所需要的最小步數(shù)
從第一個(gè)位置開始逐沙,stepMatrix[0] = 0哲思,將其所能到達(dá)的位置步數(shù)+1
然后一個(gè)一個(gè)位置的往后推,直到找到最后的位置吩案。

但是這樣的復(fù)雜度可能會(huì)達(dá)到O(n2), 因此進(jìn)行優(yōu)化棚赔,找到下一步能到達(dá)的最遠(yuǎn)位置的那個(gè)點(diǎn),從這個(gè)能到達(dá)最遠(yuǎn)位置的點(diǎn)再重復(fù)上述步驟。

class Solution {
    public int jump(int[] nums) {
        int size = nums.length;
        
        // 初始化記錄步數(shù)的矩陣
        int[] stepMatrix = new int[size];
        for(int i= 0; i<size; i++) {
            stepMatrix[i] = Integer.MAX_VALUE;   
        }
        
        stepMatrix[0] = 0;
        for(int i=0; i<size-1; ) {
            int nextPosition = i;  //下一個(gè)開始搜索的位置
            int maxPosition = 0;   //下一步可到達(dá)的最遠(yuǎn)位置
            for(int j=1; j<=nums[i]; j++) {
                //若超出范圍靠益,則已找到最小步數(shù)
                if(i+j >= size-1) {
                    return stepMatrix[i]+1;
                }
                //將可到達(dá)的位置的步數(shù)記錄為i點(diǎn)的步數(shù)+1
                if(stepMatrix[i]+1 < stepMatrix[i+j]) {
                    stepMatrix[i+j] = stepMatrix[i] + 1;
                }
                //找出下一步可以到達(dá)的最遠(yuǎn)點(diǎn)maxPosition丧肴,及其前置位置nextPosition
                if(nums[i+j] +i+j > maxPosition) {
            
                    maxPosition = nums[i+j] +i+j;
                    nextPosition = i+j;
                }
               
            }
    
            //從nextPosition處繼續(xù)執(zhí)行循環(huán)
            i = nextPosition;
        }
        
        return stepMatrix[size-1];
    }
}

思路二:
利用BFS(廣度優(yōu)先)算法,將問題轉(zhuǎn)化為圖胧后,廣度優(yōu)先遍歷芋浮,即可快速找到,復(fù)雜度為O(n);

 int jump(int A[], int n) {
     if(n<2)return 0;
     int level=0,currentMax=0,i=0,nextMax=0;

     while(currentMax-i+1>0){       //nodes count of current level>0
         level++;
         for(;i<=currentMax;i++){   //traverse current level , and update the max reach of next level
            nextMax=max(nextMax,A[i]+i);
            if(nextMax>=n-1)return level;   // if last element is in level+1,  then the min jump=level 
         }
         currentMax=nextMax;
     }
     return 0;
 }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壳快,一起剝皮案震驚了整個(gè)濱河市纸巷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌眶痰,老刑警劉巖瘤旨,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竖伯,居然都是意外死亡存哲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門七婴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祟偷,“玉大人,你說我怎么就攤上這事本姥〖缗郏” “怎么了杭棵?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵婚惫,是天一觀的道長。 經(jīng)常有香客問我魂爪,道長先舷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任滓侍,我火速辦了婚禮蒋川,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撩笆。我一直安慰自己捺球,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布夕冲。 她就那樣靜靜地躺著氮兵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歹鱼。 梳的紋絲不亂的頭發(fā)上泣栈,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼南片。 笑死掺涛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疼进。 我是一名探鬼主播薪缆,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼伞广!你這毒婦竟也來了矮燎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤赔癌,失蹤者是張志新(化名)和其女友劉穎诞外,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灾票,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峡谊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刊苍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片既们。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖正什,靈堂內(nèi)的尸體忽然破棺而出啥纸,到底是詐尸還是另有隱情,我是刑警寧澤婴氮,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布斯棒,位于F島的核電站,受9級(jí)特大地震影響主经,放射性物質(zhì)發(fā)生泄漏荣暮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一罩驻、第九天 我趴在偏房一處隱蔽的房頂上張望穗酥。 院中可真熱鬧,春花似錦惠遏、人聲如沸砾跃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抽高。三九已至,卻和暖如春课锌,著一層夾襖步出監(jiān)牢的瞬間厨内,已是汗流浹背祈秕。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雏胃,地道東北人请毛。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像瞭亮,于是被迫代替她去往敵國和親方仿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容