DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径

  • 我的代码(报错)
    写的过程中感到很迷惑的点:①二维数组和这道题目的对应弄不清除,m n的初始化 是 dp[m][n] 还是 dp[n][m] ②
class Solution {public int uniquePaths(int m, int n) {int[][]dp = new int[m+1][n+1];dp[0][0] = 0;dp[0][1] = 1;dp[1][0] = 1;for(int i=1; i<m; i++) {for(int j=1; j<n; j++) {dp[i][j] = dp[i-1][j] + dp[i-1][j-1];}}return dp[m][n];}
}/*
自己解题的时候思考过程n-1 : 往右走的次数
m-1 : 往下走的次数 dp[i][j]到当前的位置,有几种方法
dp[0][0] 0
dp[0][1] 1
dp[1][0] 1
dp[1][1] 2
dp[i][j] 的前一个状态是,(1)他的左边dp[i-1][j],或者(1)dp[i-1][j-1]
dp[i][j] = dp[i-1][j] + dp[i-1][j-1];*/

初始化出错,这里初始化要覆盖到整个左列 和 横排

// 第0列,dp[i][0] 表示到当前的位置,有几种方法,这一列都是只有一种for (int i = 0; i < m; i++) {dp[i][0] = 1;}// 第0行,dp[0][i] 表示到当前的位置,有几种方法,这一行都是只有一种for (int i = 0; i < n; i++) {dp[0][i] = 1;}

JAVA二维数组存储示意图:

在这里插入图片描述

  • 思考过程
    (1) 确定dp数组以及下标的含义:到当前的位置[i][j],有几种方法 dp[i][j]
    (2) 确定递推公式 dp[i][j] = dp[i-1][j] + dp[i][j-1];
    (3) dp数组如何初始化 本题就栽在这一步了,其实是要for循环 初始化一列和一排的
    (4) 确定遍历顺序 从前到后
    (5) 举例推导dp数组
    (6) 打印 dp 数组

  • ac

class Solution {public 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];}
}

java

求二维数组长度

int m = obstacleGrid.length;
int n = obstacleGrid[0].length;

63. 不同路径 II

  • 推导公式 dp[i][j] = dp[i-1][j] + dp[i][j-1];
    如果[i][j]有障碍,本来就走不了。
    if(obs[i][j] == 0) dp[i][j] = dp[i-1][j] + dp[i][j-1];

  • 初始化
    如果第一行或者第一列有一个障碍物,那么后面的都要初始化为0

  • 出错

java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 3at line 22, Solution.uniquePathsWithObstaclesat line 56, __DriverSolution__.__helper__at line 86, __Driver__.main

因为dp从[1][1]走起

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][]dp = new int[m][n];if(obstacleGrid[0][0] == 1 || obstacleGrid[m-1][n-1] == 1) {return 0;} //初始化for(int i=0; i<m && obstacleGrid[i][0]!=1; i++) {dp[i][0] = 1;//中途如果有obstacleGrid[i][0]!=0,那就暂停循环,Java初始化都赋了0}//初始化for(int j=0; j<n && obstacleGrid[0][j]!=1; j++) {dp[0][j] = 1;}for(int i=1; i<m; i++) { //这里写了0是错误的for(int j=1; j<n; j++) {dp[i][j] = (obstacleGrid[i][j]==0?(dp[i][j-1]+dp[i-1][j]):0);}}return dp[m-1][n-1];}
}//我的思考
// obstacleGrid[i][j] = 1 此处有障碍物,走不了
// obstacleGrid[i][j] = 0
// dp[i][j] = dp[i-1][j] + dp[i][j-1]
// 如果 obstacleGrid[i-1][j] = 1,前一种状态就不能是dp[i-1][j],dp[i][j] = dp[i][j-1]
// 如果 obstacleGrid[i][j-1] = 1,前一种状态就不能是dp[i][j-1],dp[i][j] = dp[i-1][j]

343. 整数拆分

没啥思路

力扣解题思路
① 尽可能拆成相同的数字,当所有拆分出的数字相等时,乘积最大。② 最优拆分数字为 3 。

  • 数学方法
class Solution {public int integerBreak(int n) {if(n <= 3) return n - 1;int a = n / 3, b = n % 3;if(b == 0) return (int)Math.pow(3, a);if(b == 1) return (int)Math.pow(3, a - 1) * 4;return (int)Math.pow(3, a) * 2;}
}
  • 动态规划?
    有点没看懂

96. 不同的二叉搜索树

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

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

相关文章

单目3D和bev综述

文章目录 SOTA2D 检测单目3d检测单目bev&#xff0c;一般是多目&#xff0c;小鹅通3d bev cam范式Transformer attention is all you need 2017ViT vision transformer ICLR 2021googleDETR 2020DETR3D 2021PETR 2022bevformerLSSbevdetcaddn指标 mAP NDS标注&#xff1a;基于点…

利用js实现图片压缩功能

图片压缩在众多应用场景中扮演着至关重要的角色&#xff0c;尤其是在客户端上传图片时。原始图片往往体积庞大&#xff0c;直接上传不仅消耗大量带宽资源&#xff0c;还可能导致上传速度缓慢&#xff0c;严重影响用户体验。因此&#xff0c;在图片上传至服务器前对其进行压缩处…

嵌入式开发过程中,常见报错以及解决方法

编写不易&#xff0c;仅供学习&#xff0c;参考谢谢&#xff0c;还望理解。 #常见报错 文件最后一行没有新行 翻译&#xff1a;文件的最后一行结束时没有新行 解决方法&#xff1a;定位到&#xff0c;提示报错的 .h 文件 报错行 &#xff0c;加上一个新行 函数定义时与官方提…

网信大数据信用报告查询怎么查?网信大数据有什么作用?

随着互联网的快速发展&#xff0c;大数据技术已经广泛应用于各行各业。其中&#xff0c;网信大数据信用报告查询成为了许多人关注的焦点。那么&#xff0c;如何查询网信大数据信用报告呢?网信大数据又有哪些作用呢?本文将为您一一解答。 一、如何查询网信大数据信用报告? 要…

NodeJS校园快递智能互助平台-计算机毕业设计源码58554

摘 要 随着校园人口的增加和生活节奏的加快&#xff0c;校园快递成为一个重要的服务需求。然而&#xff0c;传统的校园快递方式存在一些问题&#xff0c;例如无法满足快速和高效的需求&#xff0c;易发生丢失或损坏的情况&#xff0c;同时也给快递人员和用户带来不便。因此&am…

C++ 实现图书馆资料管理系统

1、问题描述 &#xff1a; 图书馆中的资料很多&#xff0c;如果能分类对其资料流通进行管理&#xff0c;将会带来很多方 便&#xff0c;因此需要有一个媒体库管理系统。 图书馆共有三大类物品资料&#xff1a;图书、视频光盘、图画。 这三类物品共同具有的属性有&#xff1a;编…

「51媒体」制定《媒体邀约名单》,几点建议

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 当制定媒体邀约名单时&#xff0c;以下是一些建议&#x…

海事无人机解决方案

海事巡察 海事巡察现状 巡查效率低下&#xff0c;存在视野盲区&#xff0c;耗时长&#xff0c;人力成本高。 海事的职能 统一管理水上交通安全和防治船舶污染。 管理通航秩序、通航环境。负责水域的划定和监督管理&#xff0c;维护水 上交通秩序&#xff1b;核定船舶靠泊安…

日志自动分析-操作系统-GscanLogonTracerf8x

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

Vue 中的 scoped 和 /deep/ 深度选择器

Vue在组件里写 css 给 <style> 标签加上 scoped &#xff0c;比如&#xff1a; <style lang"less" scoped> &#xff0c;这样的 css 就是局部的&#xff0c;不会影响其他组件。 假设引入了一个子组件&#xff0c;并希望在组件中修改子组件的样式&#x…

阿里云Linux中安装MySQL,并使用navicat连接以及报错解决

首先查询是否安装MySQL // linux 使用yum安装或者rpm安装。(就是一个安装工具类似于applStore&#xff0c;brew不必在意) // 区别&#xff1a;yum会自动安装你要安装的东西的其他依赖&#xff0c;rpm不会但会提示你需要安装的东西&#xff0c;比较麻烦&#xff0c;所以采用yum安…

Camera Raw:首选项 - 常规

Camera Raw 首选项中的常规 General选项卡可以为 Camera Raw 配置一些基础和常用的设置&#xff0c;这些设置可能影响界面的外观、工作流程的便利性和使用体验。 外观 Appearance 颜色主题 Color Theme 可以选择不同的界面颜色主题。 包括&#xff1a;默认值 Default、最亮 Lig…

023-GeoGebra中级篇-几何对象之圆锥曲线

圆锥曲线是解析几何中的重要部分&#xff0c;它们包括椭圆、双曲线、抛物线和圆。通过使用预先定义的变量&#xff08;如数值、点和向量&#xff09;&#xff0c;我们可以动态地构建这些曲线的方程&#xff0c;并观察它们如何随变量的变化而变化。本文将介绍如何通过定义变量来…

如何基于大模型开发应用接口

一、前言 针对自然语言处理方向&#xff0c;以前要开发一个情感分析、命名实体识别之列的应用是非常麻烦的&#xff0c;我们需要完成收集数据、清理数据、构建模型、训练模型、调优模型等一系列操作&#xff0c;每一步都非常耗时。如今大语言模型&#xff08;LLM&#xff09;的…

Hive的分区表分桶表

1.分区表&#xff1a; 是Hive中的一种表类型&#xff0c;通过将表中的数据划分为多个子集&#xff08;分区&#xff09;&#xff0c;每个分区对应表中的某个特定的列值&#xff0c;可以提高查询性能和管理数据的效率。分区表的每个分区存储在单独的目录中&#xff0c;分区的定义…

[Flask笔记]一个完整的Flask程序

前面讲过Flask是一个轻量级Web开发框架&#xff0c;为什么说是轻量级的呢&#xff0c;因为它用短短几行代码就能运行起来&#xff0c;我们一起来看看最简单的flask框架。 安装Flask 在看Flask框架之前我们需要先安装flask模块&#xff0c;学过python的肯定都知道&#xff0c;…

SQL构造一个触发器audit_log

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 构造一个触发…

TPM开启确认

TPM 2.0在系统中开启的确认 方法一 &#xff1a;鼠标右击开始菜单-运行&#xff08;或按下键盘的WinR键&#xff09;&#xff0c;输入tpm.msc&#xff0c;然后 回车 弹出窗口 方法二&#xff1a;通过“设置>权限和安全>Windows安全中心>设备安全性” 点击Devices s…

PE73_D_E6_BLE

产品参数 产品型号 PE73_D_E6_BLE 尺寸(mm) 176.2*137.15*80mm 显示技术 电子墨水屏双面显示 显示区域(mm) 163.2(H) * 97.92(V) 分辨率(像素) 800*480 外观颜色 银色 显示颜色 黑/白/红/黄/蓝/绿 视觉角度 180 工作温度 15-35℃ 产品重量 268g 电池容…

计网ip层重要面经总结

文章目录 127.0.0.1, localhost, 0.0.0.0有什么不同?ipv6还需要NAT吗&#xff1f;DNS查询服务器的基本流程浏览器输入一个URL到显示器显示的过程PING是怎么工作的&#xff1f;ipv4和ipv6究竟有哪些区别&#xff1f;什么是跨域&#xff0c;什么情况下会发生跨域问题&#xff1f…