【leetcode】62.(Medium) Unique Pathes
解題思路:
動態規劃
這道題不能用回溯,會超時
提交程式碼:
class Solution {
public int uniquePaths(int m, int n) {
if(m==1||n==1) return 1;
int[][] dp=new int[m][n];
//initialize the bottom row and right column
for(int i=0;i<n;i++)
dp[m-1][i]=1;
for(int i=0;i<m;i++)
dp[i][n-1]=1;
for(int i=m-2;i>=0;i--)
for(int j=n-2;j>=0;j--)
dp[i][j]=dp[i+1][j]+dp[i][j+1];
return dp[0][0];
}
}
執行結果:
相關推薦
【leetcode】62.(Medium) Unique Pathes
解題思路: 動態規劃 這道題不能用回溯,會超時 提交程式碼: class Solution { public int uniquePaths(int m, int n) { if(m==1||n==1) return 1; int[][]
【LeetCode】62. Unique Paths(C++)
地址:https://leetcode.com/problems/unique-paths/ 題目: A robot is located at the top-left corner of a m
【leetcode】44. (Medium) WildCard Matching
題目連結 解題思路: 這道題的意思就是字串匹配,s是正常的字串,p是帶有特殊字元的字串,在p中,’?‘可以匹配任意一個字元,’*'可以匹配任意長度(包括0)的字元。 這道題可以用DP來做。(初始答案在題目後面的Description裡) 首先動態規劃的特點是會求得所有過程中的
【leetcode】49. (Medium) Group Anagrams
題目連結 解題思路: 這道題的意思就是提取一系列詞的詞幹。 我的思路是,首先將所有的按照詞的長度分成一個一個的組(group),所有的組合並起來就是groups. 然後對for迴圈對每一個group進一步提取詞幹小組,子函式CreateGroup返回的是子結果(sub resul
【LeetCode】387. First Unique Character in a String 解題報告(Python)
作者: 負雪明燭 id: fuxuemingzhu 個人部落格: http://fuxuemingzhu.cn/ 目錄 題目描述 題目大意 解題方法 日期 題目地址:https://leetcod
【leetcode】17.(Medium) Letter Combinations of a Phone Number
題目連結 解題思路: 回溯 提交程式碼: class Solution { public List<String> letterCombinations(String digits) { List<String> res=new
【leetcode】64. (Medium) Minimum Path Sum
解題思路: DP 提交程式碼: class Solution { public int minPathSum(int[][] grid) { int row=grid.length,column=grid[0].length; int[][] dp=new
【leetcode】61. (Medium) Rotate List
解題思路: 就是修改一下連結串列結點之間的連線關係 剛開始耗時快300ms…因為要求k相對連結串列長度的絕對大小的時候我是這麼寫的: while(k>=len) k-=len; 其實直接k%=len; 就可以了,把這裡改過來就不會耗時太久了 提交程式碼:
【leetcode】60.(Medium) Permutation Sequence
解題思路: 這個題想想用蠻力法會很耗時。然後可以發現裡面的一些規律。 總體是遞迴的做法,以n=4,k=9為例: 首先n=4的所有全排列組合中,前6個是1開頭的,第6-11個是2開頭的…依次類推 如果要找第9位數,則第9位數必然是2開頭的,所以我們先將2加進答案。 剩下1、3、4: 1、3
【leetcode】59.(Medium) Spiral Matrix II
解題思路: 就是一圈一圈的加數字,分別上、右、下、左的加 提交程式碼: class Solution { public int[][] generateMatrix(int n) { int[][] ans = new int[n][n]; int cntUp = (i
【leetcode】55. (Medium) Jump Game
解題思路: 維護一個maxPosition即可 提交程式碼: class Solution { public boolean canJump(int[] nums) { int maxPosition=0; for(int i=0;i&
【leetcode】54.(Medium) Spiral Matrix
解題思路: 首先計算一下上、右、下、左的邊界總共會迴圈多少次,然後依次加進結果裡面就可以了。 提交程式碼: class Solution { public List<Integer> spiralOrder(int[][] matrix) {
【Leetcode】62. 不同路徑
題目 一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。 問總共有多少條不同的路徑? 例如,上圖是一個7 x 3
【LeetCode】62. 不同路徑 結題報告 (C++)
題目描述: 一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。 問總共有多少條不同的路徑? 例如,上圖是一個7 x 3
【leetcode】63. (Medium)Unique Pathes II
解題思路: 和Unique Path差不多 提交程式碼: class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m=obstacleGrid.lengt
【Leetcode】【DP-二維陣列】 62. Unique Paths / 不同路徑
給一個形狀為m x n的矩陣,求從左上角到右下角的不同路徑的個數。行進時只能往右/下移動。 方法一:使用二維陣列儲存每個位置的dp值 稍作畫圖分析即可得到dp式子:dp [i] [j] = dp [i-1] [j] + dp [i] [j-1] (
【leetcode】71.(Medium)Simplify Pathes
解題思路: 用一個List(pathes)維護有效路徑,遇到有效的路徑就加進pathes裡面,遇到“. .”先看pathes是否為空,為空就不管,不為空就刪掉pathes中的最後一個有效路徑。 最後將這個記錄了有效路徑的List(pathes)轉化為String的格式並返回。 提交
【leetcode】96.(Medium)Unique Binary Search Tree
解題思路: 動態規劃 首先當結點數為1和0時設定樹的個數為1 假設我已經求出來了結點數小於n的所有結果,現在當樹的個數為n時, 樹的根節點可以是1-n。 當樹的根是i是,左邊有i-1個節點,右邊有n-i個節點,及當根是i時,可以有F[i-1]*F[n-i]顆樹 遍歷一遍1-n即可
【leetcode】95.(Medium)Unique Binary Search Tree II
解題思路: 這道題的意思是,給定n,求出所有包含1-n值的中序遍歷樹 提交程式碼: class Solution { public List<TreeNode> generateTrees(int n) { List<TreeNode> res=n
【Leetcode】Count Numbers with Unique Digits(計算各個位數不同的數字個數)
microsoft code nbsp ktr https 個數 col uniq ble 357. Count Numbers with Unique Digits(計算各個位數不同的數字個數) 題目:鏈接 1 class Solution { 2 priv