动态规划-
斐波那契数列class Solution { public int fib(int n) { int [] nums new int [n1]; if (n 1) { return n; } nums[0]0; nums[1]1; for(int i2;in1;i){ nums[i]nums[i-1]nums[i-2]; } return nums[n]; } }爬楼梯class Solution { public int climbStairs(int n) { int[] dp new int[n 1]; dp[0] 1; dp[1] 1; for (int i 2; i n; i) { dp[i] dp[i - 1] dp[i - 2]; } return dp[n]; } }使用最小化花费楼梯不同路径class Solution{ public static int uniquePaths(int m, int n) { int[][] dp new int[m][n]; //初始化 for (int i 0; i m; i) { dp[i][0] 1; } for (int i 0; i n; i) { dp[0][i] 1; } for (int i 1; i m; i) { for (int j 1; j n; j) { dp[i][j] dp[i-1][j]dp[i][j-1]; } } return dp[m-1][n-1]; } }class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m obstacleGrid.length; int n obstacleGrid[0].length; int[][] grid new int[m][n]; // 起点是障碍直接返回0 if (obstacleGrid[0][0] 1) return 0; grid[0][0] 1; // 初始化第一列 for (int i 1; i m; i) { if (obstacleGrid[i][0] 1) { grid[i][0] 0; } else { grid[i][0] grid[i-1][0]; } } // 初始化第一行 for (int j 1; j n; j) { if (obstacleGrid[0][j] 1) { grid[0][j] 0; } else { grid[0][j] grid[0][j-1]; } } // DP核心 for (int i 1; i m; i) { for (int j 1; j n; j) { if (obstacleGrid[i][j] 1) { grid[i][j] 0; // 障碍路径数0 } else { grid[i][j] grid[i-1][j] grid[i][j-1]; } } } return grid[m-1][n-1]; } }整数拆分class Solution { public int integerBreak(int n) { int [] pnew int[n1]; p[0]0; p[1]0; p[2]1; for(int i3;in1;i){ for(int j1;ji;j){ p[i]Math.max(p[i],Math.max(j*(i-j),j*p[i-j])); } } return p[n]; } }不同的二叉搜索树class Solution { public int numTrees(int n) { int [] dpnew int[n1]; if(n1){return 1;} dp[0]1; dp[1]1; dp[2]2; for(int i3;in1;i){ for(int j1;ji1;j){ dp[i]dp[j-1]*dp[i-j]; } } return dp[n]; } }01背包
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422322.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!