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

收购域名seo站外优化平台

收购域名,seo站外优化平台,北京网站建设哪家靠谱,自己制作的网站怎么发布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/268580.html

相关文章:

  • 营销型网站建设主要步骤seo关键词推广渠道
  • 如何防止php网站被挂马seo必备软件
  • 一个网店转让可以卖多少钱网站建设优化公司
  • 北京网站开发招聘济南seo网络优化公司
  • 临沂最好的做网站公司手机刷网站排名软件
  • 站长工具查询官网百度seo教程
  • 建设一个网站的方法百度旅游官网
  • 做查询系统网站广告营销是做什么的
  • 专门做旅游的网站百度百科分类方法
  • 做网站软件_手机免费的网页网站
  • 丰台企业网站建设杭州百度代理公司
  • 投资加盟项目5g站长工具seo综合查询
  • 公司设计网站需要包含什么资料东莞外贸优化公司
  • 建一个营销网站多少钱外贸网站建设设计方案
  • 西安 网站开发推广app赚佣金接单平台
  • 做优化很好的网站怎样建立自己网站
  • 做网站用com还是cn好搜索引擎优化seo网站
  • 国外手机设计网站阿里云com域名注册
  • wordpress产品页面静态化seo流量优化
  • 设计网站都有哪些淘宝店铺运营
  • 网站流量太大打不开怎么办网址搜索引擎
  • 哪里学网站建设与管理长沙专业竞价优化首选
  • 关于化妆品的网页设计百度视频seo
  • wordpress动seo优化一般包括哪些内容
  • 文登区做网站的公司优化推广网站怎么做
  • wordpress游客看小图登陆查看大图白杨seo课程
  • 网站运营与管理实训报告百度做广告推广怎么样
  • linux做网站服务器谈谈对seo的理解
  • b2b网站建设舆情信息怎么写
  • 网站上传附件目录格式企业网站建设门户