自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 每日一题之最长回文子序列

如果s[i]与s[j]不相同,说明s[i]和s[j]的同时加入 并不能增加[i,j]区间回文子序列的长度,那么分别加入s[i]、s[j]看看哪一个可以组成最长的回文子序列。对dp进行初始化,当i与j相同,那么dp[i][j]一定是等于1的,即:一个字符的回文子序列长度就是1。那么dp[i][j]一定是取最大的,即:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);如果s[i]与s[j]相同,那么dp[i][j] = dp[i + 1][j - 1] + 2;

2023-11-10 09:11:49 73

原创 每日一题之回文子串

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。6个回文子串: "a", "a", "a", "aa", "aa", "aaa"当s[i]与s[j]相等时,这就复杂一些了,有如下三种情况。三个回文子串: "a", "b", "c"是字符串中的由连续字符组成的一个序列。是正着读和倒过来读一样的字符串。,请你统计并返回这个字符串中。

2023-11-09 10:10:44 61

原创 每日一题之两个字符串的删除操作

确定递推公式,当word1[i - 1] 与 word2[j - 1]相同的时候,dp[i][j] = dp[i - 1][j - 1];dp[i][0]:word2为空字符串,以i-1为结尾的字符串word1要删除多少个元素,才能和word2相同呢,很明显dp[i][0] = i,dp[0][j]的话同理。情况三:同时删word1[i - 1]和word2[j - 1],操作的最少次数为dp[i - 1][j - 1] + 2,最后要取最小值。可以删除任意一个字符串中的一个字符。

2023-11-08 09:10:09 79

原创 每日一题之不同的子序列

即dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];当s[i - 1] 与 t[j - 1]不相等时,dp[i][j]只有一部分组成,不用s[i - 1]来匹配即dp[i][j] = dp[i - 1][j];首先需要定义dp数组的含义,dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j],我们需要考虑两种情况,第一种是、当s[i - 1] 与 t[j - 1]相等时,dp[i][j]可以有两部分组成。

2023-11-06 10:50:58 51

原创 每日一题之最长公共子序列

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。这题也是动态规划的经典题目,首先我们要确定dp数组的下标及其含义,dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。最长公共子序列是 "ace" ,它的长度为 3。

2023-11-03 08:35:58 44

原创 每日一题之最长重复子数组

如果定义 dp[i][j]为 以下标i为结尾的A,和以下标j 为结尾的B,那么 第一行和第一列毕竟要进行初始化,如果nums1[i] 与 nums2[0] 相同的话,对应的 dp[i][0]就要初始为1, 因为此时最长重复子数组为1。nums2[j] 与 nums1[0]相同的话,同理我们也可以用以下标i为结尾的A和以下标j为结尾的B来定义数组,只不过二者在初始化数组上与区别,根据dp[i][j]的定义,dp[i][j]的状态只能由dp[i - 1][j - 1]推导出来。、长度最长的子数组的长度。

2023-11-02 09:18:42 50 1

原创 每日一题之最长连续递增序列

尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。最长连续递增序列是 [1,3,5], 长度为3。最长连续递增序列是 [2], 长度为1。给定一个未经排序的整数数组,找到最长且。,并返回该序列的长度。)确定,如果对于每个。就是连续递增子序列。

2023-11-01 09:10:59 56 1

原创 每日一题之最长递增子序列

这题可以用动态规划来做,依然需要用到动态规划五部曲,首先需要定义dp[i]用来表示以nums[i]为尾的最长子序列长度,位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 + 1 的最大值。所以:if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。,找到其中最长严格递增子序列的长度。

2023-10-31 09:25:01 56 1

原创 每日一题之一和零

接下来我们要初始化数组dp[0][0]=0,接着就是遍历顺序了,但我们需要求出在这个字符串数组中0和1的个数,这就要先遍历数组了,之后在遍历是由于是01背包问题,要先遍历物品也就是str数组,在遍历背包也就是mn,重点是从前向后遍历,dp[i][j] 可以由前一个strs里的字符串推导出来,strs里的字符串有zeroNum个0,oneNum个1。输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3。

2023-10-30 09:11:50 59 1

原创 每日一题之目标和

所以我们要求的是 x - (sum - x) = target。dp[j-nums[i]]表示j元素前一个元素的最大背包容量。假设加法的总和为x,那么减法对应的总和就是sum - x。此时背包容量就变成了x,注意不是target。返回可以通过上述方法构造的、运算结果等于。一共有 5 种方法让最终目标和为 3。,然后串联起所有整数,可以构造一个。首先这一题这一看和背包问题没有关系,向数组中的每个整数前添加。如何转化为01背包问题呢。给你一个非负整数数组。

2023-10-28 21:21:32 53 1

原创 每日一题之最后一块石头的重量

这道题看似复杂,但我们可以把它转换成背包问题,求石头的最小重量,我们只需要让两块石头分的重量尽可能的相近,可以先求出石头的重量,然后和2相除取整就可以了,此时target=num/2,我们再用动态规划五部曲解决,说实话就是套模板,组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],组合 2 和 1,得到 1,所以数组转化为 [1,1,1],,然后将它们一起粉碎。

2023-10-27 09:27:37 45 1

原创 每日一题之分割等和子集

递推公式为dp[j]=max(dp[j],dp[j-nums[i]]+nums[i])这里的dp[j-nums[i]]表示最大元素减去还没放入元素nums[i],我们也可以把dp[j]理解成一个最大容量的背包。dp[2] = dp[2 - nums[0]] + nums[0] = 1(dp数组已经都初始化为0)此时dp[2]就已经是2了,意味着元素nums[i],被放入了两次,所以不能正序遍历。数组可以分割成 [1, 5, 5] 和 [11]。数组不能分割成两个元素和相等的子集。倒序就是先算dp[2]

2023-10-25 09:55:00 35

原创 每日一题之不同的二叉搜索树

这题同样是动态规划,我们用dp[i]表示i个节点的二叉搜索树数目,当i=0时,二叉树的数目为一,当i=1时,二叉树的数目为1,由此我们可以推断当n为3时,就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量。元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量。所以dp[i]=dp[j-1]+dp[i-j]

2023-10-24 09:23:55 36

原创 每日一题之不同的二叉搜索树

这题同样是动态规划,我们用dp[i]表示i个节点的二叉搜索树数目,当i=0时,二叉树的数目为一,当i=1时,二叉树的数目为1,由此我们可以推断当n为3时,就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量。元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量。所以dp[i]=dp[j-1]+dp[i-j]

2023-10-24 09:19:59 39

原创 每日一题之整数拆分

目录算术运算 1.算数运算符和表达式 2.

2023-10-23 14:30:00 54

原创 每日一题之不同路径问题

这里要看一下递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历就可以了。那么很自然,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i][j]只有这两个方向过来。这样就可以保证推导dp[i][j]的时候,dp[i - 1][j] 和 dp[i][j - 1]一定是有数值的。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

2023-10-23 09:19:40 270

原创 每日一题之爬楼梯

这题看着是一道动态规划题,但可以用暴力解法来算,把前几种情况列出来会发现当前需要的方法是前两阶台阶的和。写的不知道对不对,不对的话希望大佬给出指导意见!你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。

2023-10-20 10:20:31 45 1

原创 【GO语言学习笔记】之互联网协议

互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。首先需要了解的就是最常见的七种分层模型,依次为物理层数据链路层网络层传输层会话层表示层以及应用层。互联网按照不同的模型划分会有不用的分层,但是不论按照什么模型去划分,越往上的层越靠近用户,越往下的层越靠近硬件。

2023-10-20 08:00:00 45 1

原创 【GO语言学习笔记】之gorm

直接就可以正式来使用gorm了。

2023-10-19 20:57:50 47

原创 【每日一题之】先序输出二叉树

其中BinTree函数应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符。

2023-10-19 09:03:25 578

原创 【GO语言学习笔记】之go操作MySQL

首先我们需要创建一张表,如下:接着我们需要导入两个包,在命令行输入:之后我们就可以开始数据库的增删改查操作了。

2023-10-18 21:09:14 71

原创 每日一题之力扣第45题:跳跃问题2

给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。

2023-10-18 17:41:58 114

原创 【面试复习】Java—构造器14连问

一、构造器的作用是什么?答:构造器用于给对象属性赋初值,用于初始化对象的状态。特点:方法名和类名一样。 没有返回值,且不能用void修饰。 构造器中的参数可有可无。简言之:构造器就是的作用就是创造对象。二、构造器里可以给静态变量赋值吗答:可以原理:静态变量只能定义全局的,构造方法中不能定义。补充:可以,但是用final修饰的静态变量无法再构造器中赋值。三、抽象类里面有构造器吗?答:可以...

2022-07-07 12:43:06 572 1

原创 我的编程之路——C语言(数据类型)

目录前言数据类型1.整数类型2.字符类型3.浮点类型前言我今年大一才开始学编程,不喜勿喷本内容是引荐菜鸟教程的c语言,如果侵权联系版主删除!!!!数据类型1.整数类型整数类型顾名思义就是对整数进行处理,如我们常见的int属于基本整型,当然还有其他,不同的整型所占的存储大小和值范围也是不同的,下表会给出不同整型的存储大小和值范围:类型 存储 值范围 char 1 字节 -128 到 127 或 0 到 255 unsig.

2021-11-07 15:04:44 734 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除