請注意!!!!主要用來自己馬克自己的筆記,不是最優解!!不是最優解!!不是最優解!!請不要噴我。。。乙個機械人位於乙個 m x n 網格的左上角 (起始點在下圖中標記為「start」 )。
機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角(在下圖中標記為「finish」)。
問總共有多少條不同的路徑?
思路:動態規劃題。
dp[i][j]表示[i][j]時的路徑數。每個格只能從左、上來,所以:
轉移方程:dp[i][j] = dp[i-1][j] + dp[i][j-1]
ps:如果dp陣列大小為 m x n 的話,dp[i][0] 和 dp[0][j]都需要特殊處理。所以這裡把dp大小變為m+1 x n+1 。
class solution(object):
def uniquepaths(self, m, n):
""":type m: int
:type n: int
:rtype: int
"""#dp[i][j]表示[i][j]時的路徑數。每個格只能從左、上來,所以:
#轉移方程:dp[i][j] = dp[i-1][j] + dp[i][j-1]
#需要注意:如果dp陣列大小為 m x n 的話,dp[i][0] 和 dp[0][j]都需要特殊處理。所以這裡把dp大小變為m+1 x n+1 。
#初始化
dp = [([0] * (m+1)) for i in range(n+1)]
dp[1][1]=1
i = 1
while i< n+1:
j = 1
while j < m+1:
if i!=1 or j!=1:
#更新dp[i][j] = dp[i-1][j]+dp[i][j-1]
j += 1
i += 1
return dp[n][m]
leetcode騰訊精選50題(1)
菜鳥第一課 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素...
leetcode 騰訊精選50題 21
given a linked list,rotate the list to the right by k places,where k is non negative.鍊錶的特殊性在於其可以只改變其所指向的位址,而不改變資料存放的真正位址,於是將其收尾閉合後可直接得到乙個閉環的鍊錶,在將其在指定的...
leetcode 騰訊50題 4 50 整數反轉
給定乙個int型整數,請將各位數字反轉。如果結果大於int max或小於int min,請返回0.樣例1輸入 123 輸出 321 樣例2輸入 123 輸出 321 樣例3輸入 120 輸出 21 通過 10每次取出最後一位,然後 10將最後一位刪去,將取出的那位不停加入到翻轉的數字上,當原數字刪除...