LeetCode騰訊精選練習50——第八天
阿新 • • 發佈:2021-01-20
題目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
執行結果: