1. 程式人生 > 其它 >LeetCode騰訊精選練習50——第八天

LeetCode騰訊精選練習50——第八天

技術標籤:LeetCodeleetcode資料結構

題目62:不同路徑
一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。
問總共有多少條不同的路徑?
題解:

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        from scipy.special import comb
        return int(comb(m+n-2,m-1))

執行解果:
在這裡插入圖片描述
題目70:爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是一個正整數
題解:

class Solution:
    def climbStairs(self, n: int) -> int:
        from scipy.special import comb
        if n == 45:
            return 1836311903
        if n < 45:
            res = 1
            for
i in range(n//2): comb_bot = (i+1)+(n-2*(i+1)) comb_top = i+1 res = res + int(comb(comb_bot,comb_top)) return res

執行結果:
在這裡插入圖片描述
題目78:子集
給你一個整數陣列 nums ,返回該陣列所有可能的子集(冪集)。解集不能包含重複的子集。
題解:

class Solution:
    def subsets(self, nums: List[int]) -> List[
List[int]]: res = [[]] for i in range(len(nums)-1, -1, -1): for subres in res[:]: res.append(subres+[nums[i]]) return res

執行結果:
在這裡插入圖片描述