leetcode-62. 不同路徑

想更方便閱讀代碼的朋友可以點(diǎn)這里

題目描述:

一個(gè)機(jī)器人位于一個(gè)?m x n?網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為“Start” )流译。

機(jī)器人每次只能向下或者向右移動(dòng)一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為“Finish”)里覆。

問總共有多少條不同的路徑畜埋?


例如,上圖是一個(gè)7 x 3 的網(wǎng)格烟瞧。有多少可能的路徑诗鸭?

說明:m?和?n?的值均不超過 100。

示例?1:

輸入: m = 3, n = 2

輸出: 3

解釋:

從左上角開始参滴,總共有 3 條路徑可以到達(dá)右下角强岸。

1. 向右 -> 向右 -> 向下

2. 向右 -> 向下 -> 向右

3. 向下 -> 向右 -> 向右

示例?2:

輸入: m = 7, n = 3

輸出: 28

問題分析:

? ? ? ?這是一個(gè)尋找路徑條數(shù)的問題,而且存在一個(gè)限制條件:機(jī)器人只能向右走或者向下走砾赔,這樣的話就意味著如鏡中不存在向左走再向右走這樣無解的情況蝌箍。除此我們對(duì)圖進(jìn)行分析可以知道,當(dāng)機(jī)器人走到了與終點(diǎn)同一行或者同一列的位置時(shí)暴心,就只有一條路徑方案了妓盲,敏銳的人可能發(fā)現(xiàn)了,這個(gè)可以做為遞歸的終止條件专普,那么我們?nèi)绾未_定遞歸的劃分呢悯衬?遞歸的劃分其實(shí)在題目中已經(jīng)告訴了我們方法。題目高告訴我們機(jī)器人只能向下或者向右檀夹,這是不是就意味著兩條遞歸路徑呢筋粗。

? ? ? 舉個(gè)實(shí)例,就假設(shè)當(dāng)前機(jī)器人在坐標(biāo)(1,5)處击胜,終點(diǎn)在(2,6)處亏狰,這樣的話役纹,我們可以發(fā)現(xiàn)機(jī)器人向右走得時(shí)候只有一條路徑偶摔,向下走得時(shí)候也只有一條路徑,那么從點(diǎn)(1,5)到(2,6)就有turnRinght+turnDown=2種路徑了促脉,在向上一層辰斋,例如(1,4)到(2策州,6)向下只有一條路徑,向右走一步就到了(1,5)由之前的結(jié)果我們就可以知道有兩條路徑宫仗,這樣的話够挂,(1,4)到(2,6)有3條路徑藕夫。

代碼如下:

class Solution {

? ? private int[][] cache;? //緩存 備忘錄模式


? ? public int uniquePaths(int column, int row) {

? ? ? ? if(column==0||row==0){

? ? ? ? ? ? return 0;

? ? ? ? }


? ? ? ? cache=new int[row][column];

? ? ? ? return recursion(column,row,0,0);

? ? }


? ? public int recursion(int column,int row,int x,int y){


? ? ? ? if(column-1==y||row-1==x){

? ? ? ? ? ? return 1;

? ? ? ? }


? ? ? ? if(cache[x][y]!=0){

? ? ? ? ? ? return cache[x][y];

? ? ? ? }


? ? ? ? int right= recursion(column,row,x+1,y);

? ? ? ? int down= recursion(column,row,x,y+1);

? ? ? ? cache[x][y]=right+down;

? ? ? ? return right+down;

? ? }

}

因?yàn)閱渭兊氖褂眠f歸會(huì)使得的時(shí)間和空間消耗過大孽糖,不滿足題意,所以在代碼中使用了備忘錄模式毅贮,添加了一個(gè)緩存用來存儲(chǔ)已經(jīng)走過的點(diǎn)到終點(diǎn)的路徑數(shù)量办悟。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市滩褥,隨后出現(xiàn)的幾起案子病蛉,更是在濱河造成了極大的恐慌,老刑警劉巖瑰煎,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铺然,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡酒甸,警方通過查閱死者的電腦和手機(jī)魄健,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來插勤,“玉大人诀艰,你說我怎么就攤上這事∫” “怎么了其垄?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卤橄。 經(jīng)常有香客問我绿满,道長(zhǎng),這世上最難降的妖魔是什么窟扑? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任喇颁,我火速辦了婚禮,結(jié)果婚禮上嚎货,老公的妹妹穿的比我還像新娘橘霎。我一直安慰自己,他們只是感情好殖属,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布姐叁。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪外潜。 梳的紋絲不亂的頭發(fā)上原环,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音处窥,去河邊找鬼嘱吗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滔驾,可吹牛的內(nèi)容都是我干的谒麦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼哆致,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼弄匕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沽瞭,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤迁匠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后驹溃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體城丧,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年豌鹤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亡哄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡布疙,死狀恐怖蚊惯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情灵临,我是刑警寧澤截型,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站儒溉,受9級(jí)特大地震影響宦焦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顿涣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一波闹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涛碑,春花似錦精堕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘫证。三九已至,卻和暖如春滋捶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背余黎。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工重窟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惧财。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓巡扇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親垮衷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厅翔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359