代码随想录:动态规划6-10

62、不同路径

题目

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

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

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

示例 1:

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

代码

class Solution {public int uniquePaths(int m, int n) {int[][] dp = new int[m][n]; //dp[i][j]表示走到该网格有几种路径//dp数组初始化,最上面和最左面要初始为1for(int i=0; i < m; i++){dp[i][0] = 1;}for(int j=0; j < n; j++){dp[0][j] = 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]; //返回最右下角的网格}
}

63、不同路径II

题目

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

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

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

网格中的障碍物和空位置分别用 1 和 0 来表示。

示例 1:

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

代码

class Solution {//有障碍的初始化区别:网格有障碍,右边和下面的就不初始化1,默认0了//有障碍的递推区别:有障碍的不能用递推公式,默认=0public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length; //行数int n = obstacleGrid[0].length; //列数int[][] dp = new int[m][n];  //dp[i][j]表示走到这个网格的路径个数//dp数组初始化:无障碍左边和上面全为1,有障碍,不处理后面默认全为0for(int i=0; i < m && obstacleGrid[i][0] == 0; i++){dp[i][0] = 1;}for(int j=0; j < n && obstacleGrid[0][j] == 0; j++){dp[0][j] = 1;}//遍历顺序:从上往下+从左往右for(int i=1; i < m; i++){for(int j=1; j < n; j++){//无障碍=左边+上面之和if(obstacleGrid[i][j] == 0){dp[i][j] = dp[i-1][j] + dp[i][j-1];}//有障碍,该网格不能走,路径直接归零else{dp[i][j] = 0;}}}return dp[m-1][n-1]; //返回左下角}
}

343、整数拆分

题目

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

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

示例 1:

输入: n = 2
输出: 1
解释: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

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

代码

class Solution {public int integerBreak(int n) {int[] dp = new int[n+1]; //dp[i]表示把i拆分的乘积最大值//dp数组初始化dp[1] = 0;  //0*1dp[2] = 1;  //1*1//遍历顺序,从3-n进行拆分,计算dp[i]for(int i=3; i <= n; i++){//对i进行拆分//用3举例:3=1+2/dp[2],3=2+1/dp[1]//用4举例:4=1+3/dp[3],4=2+2/dp[2],4=3+1/dp[1]for(int j=1; j < i; j++){int two = j * (i - j);  //把i拆成两数相乘int three = j * dp[i-j]; //把i拆成多数相乘//求max的时候dp[i]不能漏,因为two和three只是把i进行j的两种拆分,但不一定的dp[i]拆分的最大值dp[i] = Math.max(dp[i], Math.max(two, three));  //递推公式}}return dp[n];}
}

96、不同的二叉搜索树

题目

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

示例 1:

输入:n = 3
输出:5

示例 2:

输入:n = 1
输出:1

代码

class Solution {public int numTrees(int n) {int[] dp = new int[n+1]; //dp[i]表示i个节点的二叉搜索树的个数//dp数组初始化dp[0] = 1;  //空树是一个二叉搜索树//遍历顺序:i从1-n分别计算二叉搜索树的个数dp[i]for(int i=1; i <= n; i++){//对i个节点进行拆分,以1为头结点-以i为头结点的情况分别求和,得到dp[i]for(int j=0; j < i; j++){//以i=3举例//dp[3] = 以1头结点+以2头结点+以3头结点//dp[3] = dp[0]*dp[2] + dp[1]*dp[1] + dp[2]*dp[0](左子树*右子树)int tmp = dp[j] * dp[i-1-j];  //递推公式dp[i] += tmp;}}return dp[n];  //返回n个节点的个数}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最全的软件工厂考试简答题教程

软件工程考试简答题 1. 有人认为软件开发时&#xff0c;一个错误发现得越晚&#xff0c;为改正它所付出的代价越大。提出你的观点并解释原因&#xff1f; &#xff08;1&#xff09;在软件开发的不同阶段进行修改付出的代价是很不相同的&#xff0c;在早期引入变动&#xff0c…

openai whisper使用

whisper使用 介绍 Whisper是一种通用的语音识别模型。它是在大量不同音频数据集上训练的&#xff0c;也是一个多任务模型&#xff0c;可以执行多语言语音识别、语音翻译和语言识别。 GitHub&#xff1a;https://github.com/openai/whisper 论文链接&#xff1a;https://arx…

注册Github账号详细过程

目录 一、准备工作 二、注册步骤 一、准备工作 在注册GitHub账号之前&#xff0c;请确保您已经准备好以下信息&#xff1a; 一个有效的电子邮箱地址&#xff1a;用于接收验证邮件和GitHub的后续通知。 用户名&#xff1a;确保该用户名在GitHub上是唯一的&#xff0c;且符合…

turtle画图知识

Turtle库是Python编程语言中的一个库&#xff0c;用于创建各种类型的图形&#xff0c;包括简单圆形、线条、路径和图片。它支持多种图形类型&#xff0c;并且可以绘制出各种复杂的形状。 以下是一些基本的使用方法&#xff1a; 1. 创建一个新的Turtle对象&#xff1a; pytho…

Leetcode JAVA刷刷站(53)最大子数组和

一、题目概述 二、思路方向 这个问题是一个经典的算法问题&#xff0c;称为“最大子序和”&#xff08;Maximum Subarray Problem&#xff09;。解决这个问题的一个高效方法是使用“Kadanes Algorithm”&#xff0c;它只需要遍历数组一次&#xff0c;就能在 O(n) 时间复杂度内…

CVPR2023《DNF: Decouple and Feedback Network for Seeing in the Dark》暗光图像增强论文阅读笔记

相关链接 论文链接 https://openaccess.thecvf.com/content/CVPR2023/papers/Jin_DNF_Decouple_and_Feedback_Network_for_Seeing_in_the_Dark_CVPR_2023_paper.pdf 代码链接 https://github.com/Srameo/DNF 摘要 RAW数据的独特属性在低光照图像增强方面展现出巨大潜力。…

C语言典型例题47

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题3.7 输入4个整数&#xff0c;要求按照从小到大的顺序输出 4个数之间进行比较&#xff0c;冒泡排序最最最详细过程&#xff0c;如果想更改为任意数之间相互比较&#xff0c;只需要修改两个地方&#xff08;数组大…

力扣面试经典算法150题:买卖股票的最佳时机 II

买卖股票的最佳时机 II 今天的题目是力扣面试经典150题中的数组的中等难度题&#xff1a;买卖股票的最佳时机 II。 题目链接&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150 问…

教程:postman的平替hoppscotch,又叫postwoman,hoppscotch的docker-compose安装过程

目录 1. 背景2. 前期准备2.1 准备docker-compose文件&#xff0c;两个版本&#xff0c;一个3合1&#xff0c;一个分开2.1.1 3合1版本&#xff08;推荐&#xff09;2.1.2 独立版本 2.2 准备安装nginx-proxy-manager&#xff08;可选&#xff09;2.2 准备.env文件2.2.1 默认ip的.…

Spring Boot OAuth2.0应用

本文展示Spring Boot中&#xff0c;新版本OAuth2.0的简单实现&#xff0c;版本信息&#xff1a; spring-boot 2.7.10 spring-security-oauth2-authorization-server 0.4.0 spring-security-oauth2-client 5.7.7 spring-boot-starter-oauth2-resource-server 2.7.10展示三个服务…

Android高版本抓包总结

方案1 CharlesVirtualXposedJustTrustMe 推荐使用三星手机此方案 VirtualXposed下载链接&#xff1a;https://github.com/android-hacker/VirtualXposed/releases JustTrustMe下载链接&#xff1a;https://github.com/Fuzion24/JustTrustMe/releases/ 下载完成后使用adb命令…

从易车“超级818冠军之夜” 看如何借势体育营销点燃汽车消费热潮

编辑 | 魏力 发布 | 大力财经 导语&#xff1a;这个8月&#xff0c;是属于奥运的8月。 巴黎奥运会虽圆满落幕&#xff0c;但属于奥运健儿们的热度还在持续。在这股奥运热潮的带动下&#xff0c;全民运动热情持续释放&#xff0c;同时也激发出巨大的消费潜力。 赛场外&#…

黄热病疫苗市场调研:预计到 2030 年全球市场规模将达到 1.8 亿美元

一、黄热病疫苗市场研究 &#xff08;一&#xff09;发展趋势 1. 市场规模增长&#xff1a;据调研团队报告所示&#xff0c;预计到 2030 年全球黄热病疫苗市场规模将达到 1.8 亿美元&#xff0c;年复合增长率为 3.0%。这表明市场在未来几年将保持稳定增长态势。增长的原因主要…

LSI-9361阵列卡笔记

背景 要将raid0更改为JBOD直通模式 注意的点是要先将raid模式调整为JBOD之后重启机器&#xff0c;即可 备注&#xff1a;转换过程中硬盘中的数据未丢失。 步骤贴图 refer https://zhiliao.h3c.com/questions/dispcont/123250 https://blog.csdn.net/GreapFruit_J/article/…

Android Activity启动流程(Android 13)

文章目录 Android Activity启动流程(Android 13)概述流程图前提流程分析Activity#startActivity()Activity#startActivityForResult()Instrumentation#execStartActivity()ActivityTaskManager#getService() ActivityTaskManagerService#startActivity()ActivityTaskManagerSer…

解决window 端口的占用问题

netstat -nao | findstr "5554" taskkill -pid 5076 -f 本文资料来自 https://cloud.tencent.com/developer/article/1703982

基于机器学习的二手房房价数据分析与价格预测模型

有需要本项目的可以私信博主&#xff0c;提供远程部署讲解 本研究聚焦重庆二手房市场&#xff0c;通过创新的数据采集和分析方法&#xff0c;深入探讨影响房价的关键因素&#xff0c;并开发了预测模型。 我们首先利用Python编写的爬虫程序&#xff0c;巧妙规避了链家网站的反…

Mac文件需要分卷压缩怎么办 Mac上怎么解压分卷压缩的文件

在处理大型文件的传输和存储的时候&#xff0c;Mac用户常面临文件大小超过限制的问题。为了有效管理这些大文件&#xff0c;分卷压缩成为一种必不可少的解决方案。Mac文件需要分卷压缩怎么办&#xff1f;Mac上怎么解压分卷压缩的文件&#xff1f;本文将向你介绍如何使用BetterZ…

探索数据结构:并查集的分析与实现

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 并查集的引入 1.1 并查集的概念 并查集是一种树型数据结构&#xf…

什么是品牌低价 低价要如何处理

在消费领域&#xff0c;当消费者遭遇商品价格混乱不堪的局面&#xff0c;他们大可以选择敬而远之&#xff0c;放弃购买。但对于品牌商而言&#xff0c;若线上出现低价、乱价的情况&#xff0c;若坐视不管&#xff0c;那必然会引发一系列严重后果。 品牌若是对线上的低价、乱价现…