当前位置: 首页 > wzjs >正文

出效果图西安优化排名推广

出效果图,西安优化排名推广,网站添加备案号,wordpress考试系统Day29 动态规划part02 LeetCode 62.不同路径 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &…

Day29

动态规划part02

LeetCode 62.不同路径

题目描述

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例

输入:m = 3, n = 7
输出:28

题目链接

https://leetcode.cn/problems/unique-paths/

思路
  1. dp数组及下标含义

dp[i][j], 走到第i行第j列处的路径条数

  1. 递推公式
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
  1. 初始化

第一行和第一列都只有一种方式抵达

解决代码
class Solution {public int uniquePaths(int m, int n) {//dp[i][j] = dp[i - 1][j] + dp[i][j - 1]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];}
}

LeetCode 63. 不同路径 II

题目描述

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角(即 grid[0][0])。机器人尝试移动到 右下角(即 grid[m - 1][n - 1])。机器人每次只能向下或者向右移动一步。

网格中的障碍物和空位置分别用 10 来表示。机器人的移动路径中不能包含 任何 有障碍物的方格。

返回机器人能够到达右下角的不同路径数量。

测试用例保证答案小于等于 2 * 109

示例

输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:

  1. 向右 -> 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右 -> 向右

题目链接

https://leetcode.cn/problems/unique-paths-ii/description/

思路
  1. dp数组及下标含义

dp[i][j], 走到第i行第j列处的路径条数

  1. 递推公式
if (obstacleGrid[i][j] == 1)dp[i][j] = 0;
elsedp[i][j] = dp[i - 1][j] + dp[i][j - 1];
  1. 初始化

第一行和第一列都只有一种方式抵达且遇到有障碍, 之后的都无法抵达

解决代码
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length, n = obstacleGrid[0].length;int[][] dp = new int[m][n];for (int i = 0; i < m; i++) {if (obstacleGrid[i][0] == 1)break;dp[i][0] = 1;}for (int j = 0; j < n; j++) {if (obstacleGrid[0][j] == 1)break;dp[0][j] = 1;}for (int i = 1; i < m; i++)for (int j = 1; j < n; j++) {if (obstacleGrid[i][j] == 1)dp[i][j] = 0;elsedp[i][j] = dp[i - 1][j] + dp[i][j - 1];}return dp[m - 1][n - 1];}
}

LeetCode 343.整数拆分

题目描述

给定一个正整数 n ,将其拆分为 k正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积

示例

输入: n = 10
输出: 36
解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。

题目链接

https://leetcode.cn/problems/integer-break/

思路
  1. dp数组及下标含义

拆分n所能获得的最大乘积

  1. 递推公式
dp[i] = Math.max(dp[i], Math.max(j * dp[i - j], j * (i - j)))
//i为需要被拆分的数, j为当前拆分大小
  1. 初始化

2只能拆分为1 + 1, 所以dp[2] = 1; 小于2的情况没有意义

解决代码
class Solution {public int integerBreak(int n) {int[] dp = new int[n + 1];dp[2] = 1;for (int i = 3; i <= n; i++)for (int j = 1; j < i; j++) {dp[i] = Math.max(dp[i], Math.max(dp[i - j] * j, j * (i - j)));}return dp[n];}
}

LeetCode 96.不同的二叉搜索树

题目描述

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。

示例

输入:n = 3
输出:5

题目链接

https://leetcode.cn/problems/unique-binary-search-trees/submissions/617446590/

思路
  1. dp数组及下标含义

节点值从 1n 互不相同的 二叉搜索树的个数

  1. 递推公式

根节点为1, 则共有 dp[0] * dp[n - 1]种

根节点为2, 则有dp[1] * dp[n - 2]种

所以dp[n] += dp[j - 1] * dp[n - j];

n为总节点个数

j∈[1, n]

dp[j - 1] :左子树为j - 1个节点的二叉搜索树个数

dp[n - j]:右子树为n - j个节点的二叉搜索树个数

  1. 初始化

dp[0] = 1, dp[1] = 1

解决代码
class Solution {public int numTrees(int n) {int[] dp = new int[n + 1];dp[0] = 1;dp[1] = 1;for (int i = 2; i <= n; i++)for (int j = 1; j <= i; j++) {dp[i] += dp[i - j] * dp[j - 1];}return dp[n];}
}

http://www.dtcms.com/wzjs/119168.html

相关文章:

  • 苏州企业网站建站系统关键词
  • 教育培训类网站开发公司网络推广排名定制
  • 网站首页html代码重庆高端网站seo
  • 哪些网站可以在线做动图深圳网络络推广培训
  • 哈尔滨建设网站制作工厂管理培训课程
  • 建网站可以卖钱seo的方式包括
  • 网站建设 锋云科技公司青岛seo代理计费
  • 开发网站监控工具重庆百度推广seo
  • 做网站维护有危险吗seo交流网
  • 为什么很多公司做网站建设电脑系统优化软件排行榜
  • 2016年做水果行业专业网站长沙企业关键词优化哪家好
  • wordpress 用什么编辑器百合seo培训
  • 一步一步教你做网站后台视频域名注册服务网站查询
  • 关键词看片安卓手机优化软件排名
  • 哪个网站做h5比较好百度霸屏培训
  • 宛城区网站制作裂变营销
  • 温州做网站哪儿专业的seo外包公司
  • 网站建设哪家公司好天津seo推广软件
  • 做播放器电影网站需要多少钱天津seo推广
  • 技术支持 东莞网站建设传送带百度怎么发帖子
  • 地方网站源码网店培训教程
  • 诺亚人力资源外包网seo可以提升企业网站的
  • 可以做网页的网站学网络营销有用吗
  • www技术支持 重庆网站建设怎么在百度上做推广
  • h5移动端网站模板下载百度上广告怎么搞上去的
  • ui设计和网站开发个人博客网页设计html
  • 做网站的用什么电脑好有了域名如何建立网站
  • 皮卡剧网站怎样做郑州做网络优化的公司
  • 专业的led网站建设宁波seo排名优化价格
  • 怎么模仿网站做pptseo教程排名第一