国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

leetcode70 climbing stairs 爬樓梯游戲

姘存按 / 913人閱讀

摘要:題目要求假設(shè)有級(jí)臺(tái)階為正整數(shù),每次可以爬一級(jí)臺(tái)階或兩級(jí)臺(tái)階。問(wèn)有多少種方法爬完級(jí)臺(tái)階遞歸方法最后一步可以是一級(jí)臺(tái)階,或者是兩級(jí)臺(tái)階,一共兩種情況。

題目要求:假設(shè)有n級(jí)臺(tái)階(n為正整數(shù)),每次可以爬一級(jí)臺(tái)階或兩級(jí)臺(tái)階。問(wèn)有多少種方法爬完n級(jí)臺(tái)階?

遞歸方法
最后一步可以是一級(jí)臺(tái)階,或者是兩級(jí)臺(tái)階,一共兩種情況。可通過(guò)遞歸獲得n-1級(jí)臺(tái)階和n-2級(jí)臺(tái)階的和獲得n級(jí)臺(tái)階的結(jié)果
臺(tái)階數(shù)量過(guò)高的話,性能會(huì)很差

/**
 * @author rale
 * You are climbing a stair case. It takes n steps to reach to the top.
 * Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
 * Note: Given n will be a positive integer.
 */
public class ClimbingStairs {

    //遞歸    
    public int climbStairs(int n) {
        if(n<=1){
            return 1;
        }
        if(n%2==0){
            return (int) (Math.pow(climbStairs(n/2), 2)+Math.pow(climbStairs(n/2-1), 2));
        }
        return climbStairs(n-1)+climbStairs(n-2);
    }
}

非遞歸情況
為了提高性能,將遞歸轉(zhuǎn)化為循環(huán)
可以將題目轉(zhuǎn)換為n級(jí)臺(tái)階中有幾步是爬了兩級(jí)臺(tái)階,幾步是爬了一級(jí)臺(tái)階
例如 3級(jí)臺(tái)階的的場(chǎng)景為 3個(gè)一步 或者 1個(gè)一步加1個(gè)兩步
則n級(jí)臺(tái)階的場(chǎng)景為:
假設(shè)n級(jí)臺(tái)階中有a個(gè)兩步,n-2*a個(gè)一步,則情況總數(shù)為C(n-a,a)
a的取值范圍為[0,n/2]

/**
 * @author rale
 * You are climbing a stair case. It takes n steps to reach to the top.
 * Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
 * Note: Given n will be a positive integer.
 */
public class ClimbingStairs {
        public int climbStairs(int n){
        if(n<=1){
            return 1;
        }
        int countTwo = 1;
        int total = 1;
        while(countTwo*2<=n){
            //此處應(yīng)設(shè)為long,防止值溢出
            long temp = 1;
            for(int i = n-countTwo, j = 1 ; j<=countTwo; i--,j++){
                temp = temp*i/j;
            }
            total += temp;
            countTwo++;
        }
        return total;
    }
}


想要了解更多開(kāi)發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/66852.html

相關(guān)文章

  • LeetCode 之 JavaScript 解答第70題 —— 樓梯Climbing Stair

    摘要:小鹿題目假設(shè)你正在爬樓梯。需要階你才能到達(dá)樓頂。你有多少種不同的方法可以爬到樓頂呢注意給定是一個(gè)正整數(shù)。算法思路二種解決思路,第一利用遞歸第二利用動(dòng)態(tài)規(guī)劃。就是因?yàn)橛辛酥貜?fù)元素的計(jì)算,導(dǎo)致了時(shí)間復(fù)雜度成指數(shù)的增長(zhǎng)。 Time:2019/4/12Title:Clibing SrairsDifficulty: EasyAuthor:小鹿 題目:Climbing Stairs You a...

    chemzqm 評(píng)論0 收藏0
  • [Leetcode] Climbing Stairs 樓梯

    摘要:遞歸法復(fù)雜度時(shí)間空間思路這題幾乎就是求解斐波那契數(shù)列。最簡(jiǎn)單的方法就是遞歸。但重復(fù)計(jì)算時(shí)間復(fù)雜度高。代碼遞推法復(fù)雜度時(shí)間空間思路實(shí)際上我們求的時(shí)候只需要和的值,所以可以減少一些空間啊。 Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time you c...

    tinyq 評(píng)論0 收藏0
  • [leetcode] Climbing Stairs

    摘要:實(shí)質(zhì)就是把之前出現(xiàn)過(guò)的中間結(jié)果記錄,下次再出現(xiàn)相同情況的時(shí)候,通過(guò)可以只用的時(shí)間復(fù)雜度得到。表示到達(dá)第層樓梯的不同走法。那么題目中每次可以選擇走一步,或者兩步,。從迭代公式可以知道,有兩個(gè),和。 70. Climbing Stairs You are climbing a staircase. It takes n steps to reach to the top.Each tim...

    int64 評(píng)論0 收藏0
  • 前端 | 每天一個(gè) LeetCode

    摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...

    張漢慶 評(píng)論0 收藏0
  • leetcode 746 Min Cost Climbing Stairs

    摘要:同時(shí)你可以選擇從第階開(kāi)始或者第一階開(kāi)始。我們的目標(biāo)是找出你爬到最頂層所付出的最小的開(kāi)銷。最低開(kāi)銷是,從第階開(kāi)始,只花費(fèi)就可以到頂層。想法動(dòng)態(tài)規(guī)劃問(wèn)題。的長(zhǎng)度應(yīng)該為數(shù)組長(zhǎng)度加一,其中數(shù)組的最后一個(gè)元素的值就是本題的答案,最低開(kāi)銷。 題目詳情 On a staircase, the i-th step has some non-negative cost cost[i] assigned ...

    fyber 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<