Leetcode學習筆記(1)

Rorschach_233發表於2020-12-16

62.不同路徑

覺得這是一道數學問題了。機器人只能向右走或者是向下走,要從起點到終點,必須要走m+n-2步,從這m+n-2步中選出m-1步往下走,n-1步往右走。要求的就是組合數Cm+n-2n-1或者Cm+n-2m-1了,m-1和n-1,哪個小選哪個。程式碼如下:

class Solution {
public:
    int uniquePaths(int m, int n) {
        int num=m+n-2;
        int less=m>n?n-1:m-1;
        long long g=1;
        long long h=1;
        for(int i=less; i>0; --i){
            g=g*num;
            --num;
        }
        for(int i=less; i>0; --i){
            h=h*less;
            --less;
        }
        return g/h;
    }
};

算階乘剛開始用了“!”,報錯,所以改成用迴圈了。g,h設為int會溢位,改為long long。

執行用時0ms,擊敗100%。記憶體消耗6.2MB,擊敗64.84%。

相關文章