【LeetCode】路径系列
来源:互联网 发布:知乎 福利 文 编辑:程序博客网 时间:2024/06/06 08:57
62. Unique Paths
题目:从左上到右下,有多少种不同的路径
思路:排列组合
public class Solution { public int uniquePaths(int m, int n) { long y = 1, x = 1; long min = Math.min(m, n); if(min == 1) return 1; for(long i = Math.max(m, n); i <= m+n-2; i++){ y *= i; } for(long i = 1; i <= min-1; i++){ x *= i; } return (int)(y/x); }}动态规划:
public class Solution {public int uniquePaths(int m, int n) { int[][] grid = new int[m][n]; for(int i = 0; i<m; i++){ for(int j = 0; j<n; j++){ if(i==0||j==0) grid[i][j] = 1; else grid[i][j] = grid[i][j-1] + grid[i-1][j]; } } return grid[m-1][n-1];}
63. Unique Paths II
题目:有1的位置表示有障碍,统计所有路径数
思路:沿用62题动态规划的方法,遇1路径数为零
public class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; int n = obstacleGrid[0].length; int[][] dp = new int[m][n]; dp[0][0] = obstacleGrid[0][0] == 1?0:1; for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ if(i == 0 && j > 0){ if(obstacleGrid[i][j] == 1) dp[i][j] = 0; else dp[i][j] = dp[i][j-1]; } if(j == 0 && i > 0){ if(obstacleGrid[i][j] == 1) dp[i][j] = 0; else dp[i][j] = dp[i-1][j]; } if(i > 0 && j > 0){ if(obstacleGrid[i][j] == 1) dp[i][j] = 0; else dp[i][j] = dp[i-1][j] + dp[i][j-1]; } } } return dp[m-1][n-1]; }}
64. Minimum Path Sum
题目:找到最小路径和
思路:动态规划,很简单
public class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; int[][] dp = new int[m][n]; dp[0][0] = grid[0][0]; for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ if(i ==0 && j > 0) dp[i][j] = dp[i][j-1]+grid[i][j]; if(j ==0 && i > 0) dp[i][j] = dp[i-1][j]+grid[i][j]; if(i > 0 && j > 0) dp[i][j] = Math.min(dp[i][j-1], dp[i-1][j]) + grid[i][j]; } } return dp[m-1][n-1]; }}
70. Climbing Stairs
题目:爬梯子,每步1到2级,n步能爬到多少级
思路:斐波那契数列,没啥好说的
public class Solution { public int climbStairs(int n) { if(n < 2) return 1; int pre = 1; int x = 1; for(int i = 2; i <= n; i++){ int next = pre+x; pre = x; x = next; } return x; }}
阅读全文
0 0
- 【LeetCode】路径系列
- leetcode 系列
- leetcode系列(24)Path Sum 判断二叉树中和为Sum的路径是否存在
- 求最短路径算法系列
- 求最短路径算法系列
- [LeetCode]路径和
- [LeetCode]路径和2
- leetcode 二分查找系列
- leetcode 括号匹配系列
- leetcode 全排列系列
- leetcode 回文系列 Palindrome
- Leetcode之remove系列
- 【Leetcode长征系列】Permutations
- 【leetcode系列】Two Sum
- 【leetcode系列】3Sum
- 【leetcode系列】Valid Parentheses
- Leetcode系列开题总结
- Leetcode--easy系列1
- spring boot mybatis结合初探
- 动态添加 data 属性的时候 发现某一个值无法取到
- 第14章:日志管理
- 结构体数组,结构体指针 (C,随笔)
- 排序算法总结(4)--希尔排序
- 【LeetCode】路径系列
- Android定制:修改开机启动画面
- 四旋翼建模
- Visual Studio Code 使用 Typings 实现typescript的智能提示功能
- C/C++跨平台的的预编译宏
- 在web.xml中配置异常处理页面
- D3 坐标轴
- mac下sublime text 3 运行java文件
- MD5介绍、使用场景和使用中的注意事项