自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法刷题日志

从左下角开始找,比目标要小的就往右走,比目标要大的就往上走,等于就返回true。先判断合法不合法,合法就添加进队列,然后递归的方式去判断。记得研究acm模式下怎么写链表题。

2024-08-26 07:53:44 481 1

原创 LCR 162. 数字 1 的个数 题解

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。时间复杂度o(n),空间复杂度 o(1)

2024-08-23 10:34:00 170

原创 【算法刷题日志】4. 寻找两个正序数组的中位数 题解

通过二分的方法,每次排除掉k/2的数,不断地递归排除,直到最后k=1的时候就选取最小的那个数就可以了。

2024-08-14 14:48:45 166

原创 【算法刷题日志】1044 最长重复子串和75 颜色分类,

所以p这个数组的意义就是 相当于一个哈希因子一样,为了减少哈希冲突的可能性,h数组代表的就是比如h【i】 就是长度为i的字符串的哈希值,用字符串哈希来匹配,关键在于如何 check 函数,即实现「检查某个长度 len 作为最大长度,是否存在合法方案」。这题就是双指针法,指到1的时候就和p1进行交换,然后p1指针往前移动,指到0的时候就和p0指针进行交换,p0和p1同时往前移动,由于可能出现连续的0后面连续的1,所以为了避免1被交换到末尾,当p1>p0的时候 还需要再和p1在交换一次。

2024-08-06 15:48:51 279

原创 【算法刷题日志】信封嵌套问题

每次合法的嵌套都是大的套小的,就相当于找一个最长递增子序列,长度就是能嵌套的最多个数,所以我们可以先对宽度进行升序排序,如果宽度相同就按高度降序排序,降序排序就可以保证相同宽度的信封只有一个会被进行嵌套,避免重复。参考labuladong的题解https://leetcode.cn/problems/russian-doll-envelopes/solutions/19681/zui-chang-di-zeng-zi-xu-lie-kuo-zhan-dao-er-wei-er/

2024-07-30 11:50:18 335

原创 算法刷题日志 —— 数组和位运算

SET去重,直接加入,如果set能add成功的话说明 nums中没有,这时候就可以加入list。、两个数相同异或等于0 不同等与一 一直循环异或就可以得到最终的那个数。本身不改变 x 和 y,每次取不同的偏移位进行比较,不同则加一。循环固定取满 32。

2024-06-27 21:29:29 378

原创 算法刷题日志 hot100 数组分类

1 2 3 1 比如数组为 1234,则答案则像左边的矩阵一样,然后中间线就是1 然后就分为左下角,和右上角,运用了摩尔投票的思想,就是cnt就是票数,当票数为0的时候可以缩小区间,且此时不影响众数的取值。将数组排序,排序之后,随机整一个随机数在该数组的范围里面,记住i 是每一行 j是每一列 然后此解法是原地旋转90°。

2024-06-26 20:40:42 525

原创 力扣算法刷题日志

看到 dp[i + 1][j - 1] 就需要考虑特殊情况:如果去掉 s[i…j] 是否是回文只取决于 s[i] 与 s[j] 是否相等。j] 的长度为 222 时,只需要判断 s[i] 是否等于 s[j],所以二维表格对角线上的数值不会被参考。j] 表示 s 的一个子串,因此 i 和 j 的关系是 i <= j,只需要填这张表格对角线以上的部分,因为是回文,所以确定一半就可以了;dp[i][j] 表示:子串 s[i…j] 定义为左闭右闭区间,即可以取到 s[i] 和 s[j]。第 1 步:定义状态。

2024-06-06 15:11:13 258

原创 算法刷题日志——每日一题 二叉树

看完题之后觉得有点不能理解题意,在思考了之后还是想不明白,然后就打开了题解,参考了灵茶山艾府的题解,豁然开朗。

2024-02-28 15:10:18 645

原创 关于rocketMQ踩坑的那些事

最后终于顺利启动mq啦!在最近,我所写的这个项目需要使用到rocketMQ,为了图方便我便使用的是Windows版本的,但是在使用的过程中首先是发现无法发送消息出去,报错信息为。然后我就根据解决方案一个个进行排查,首先我去修改了配置文件,各种修改都发现没有用,修改了conf中的broker的配置,加了以下这些信息。这一切真的很不容易,我从前一天的下午五点 然后到第二天的晚上八点半才修好,总算成功完结了自己的项目啦!然后我就把 安装文章中说的,把linux的防火墙关掉了,然后后面就是配置mq,也是踩坑不少,

2023-12-04 23:05:56 1398

原创 算法刷题日志_链表

这题依旧是使用快慢指针,一个走一步一个走两步,快指针停止循环的条件为当前节点和下一个节点不为空,当快指针停下时,此时slow指针的位置就是目标位置。先让快指针移动k步,然后再让快慢指针都一步一步前进,当快指针移动到空值时,此时慢指针离尾结点距离为k-1,也就是倒数第k个节点的位置了。这里我们使用快慢指针来解决这道题,当链表中有环时,那么快慢指针必定会相遇,如果没有环则不会相遇,链表大都是使用快慢指针来进行解题,然后根据不同题目来确定while循环结束的条件。

2023-04-19 13:36:42 138 1

原创 算法刷题日志

今天是星期几就加上多少天在最后这题是判断左右回文,且要保持单调性,因为回文数左右对称所以只需要判断左边是否单调递增。先用数组统计每个字母出现次数,再用list来存放答案,循环遍历查找出现次数最多的并存入list之中,大于max就更新list,等于的话同样也可以存入list。

2023-04-12 23:57:55 543

原创 算法刷题日志

这题考察的是并查集,因为数据量过大所以这里我们使用快读快写,当数据的数量级为10^5时,用StreamTokenizer类差不多好像是要比Scanner快个300ms左右。因为可以重复走, 所以遍历整个地图计算所有的可能性并存取到set集合当中,最后输出set的size就是答案数之和。bfs寻找最短路,每一个点产生链接就是为一层,然后不断bfs,每一次入队刚好就可以遍历完一层,用dfs在每个点都进行上下左右四个方向都走一次(当然要注意是否合法)

2023-03-26 17:37:20 100

原创 算法刷题日志

所以可以通过后序遍历找到根的值,然后再到中序序列里找到根的位置再将该树分为左子树与右子树 然后不断递归即可通过中序和后序重塑一棵树。开一个数组v(初始化都是零) 每次对数组v(i - ai + 1, i)做差分操作,对数组v求前缀和 得数组a 如果ai的位置为0,表示它没有操作过,就是0;一棵二叉树可由它的中序遍历(左 中 右)和后序遍历(左 右 中)确定。1.后序遍历的最后一定是该树或子树的根。2.中序遍历根的左右分左子树和右子树。如何由中序和后序确定一棵二叉树。如果大于等于1 ,就是1。

2023-03-13 20:01:45 90

原创 算法刷题日志

二分查找以及字符串哈希,mid之后的答案都是合法的,此题寻找的是最小的K值,所以check的话 如果mid是true的话,那就把r变为mid,反之 l=mid+1,这题就是寻找最小长度下不重复的字符串,所以不等于1的时候就返回FALSE;遍历前缀和数组,边扫描边记录哪些地方可以切第一刀,哪些地方可以切第二刀。如果位置j可以切第二刀,那么它与前面第一刀进行组合,就可以切成三部分。遍历从1~n的每个点,如果这个点是白色,那么把它和它后面那个反转颜色。如果黑色不匹配的话还可以用白色,若白色也不匹配则无解。

2023-03-12 21:20:53 78

原创 算法刷题日志

hs哈希表维护的是s字符串中滑动窗口中各个字符出现多少次,ht哈希表维护的是t字符串各个字符出现多少次。Java中的Map提供了getOrDefault()方法,对不存在的键值提供默认值的方法。滑动窗口,用i和j代表滑动窗口的两端,品种超过2种就不符题意。

2023-02-23 16:56:28 74

原创 算法刷题日志——移除元素,双指针

同时从后向前遍历S和T(i初始为S末尾,j初始为T末尾),记录#的数量,模拟消除的操作,如果#用完了,就开始比较S[i]和S[j]。for(int x :nums) for的增强循环,x就是代表数组元素,k代表的是最多能保留的位数。对于后面的任意数字,能够保留的前提是:与当前写入的位置前面的第 k 个元素进行比较,不相同则保留。双指针遍历,第一次先把所有非0元素提前,然后后面从j位置开始全部变成0。由于是保留 k 个相同数字,对于前 k 个数字,我们可以直接保留。和上题类似,把k改成2即可。

2023-02-22 12:02:40 396

原创 算法刷题日志——二分查找

总结二分查找, while中的条件是(l

2023-02-21 12:16:47 87

原创 算法刷题日志

题解: 双指针算法,两边向中间移动,每次只移动最短的那个, 面积就是 (j-i)*最短的板的高度,然后保存到res,直到两个指针相遇时结束循环。递归,这样就不需要重新建立一个链表了。本题使用dfs解决,不断搜出所有可能性。

2023-02-19 23:35:08 82

原创 算法刷题日志

单调栈,如果当前温度比后面的要小,就是能更新下标就直接更新否则不用动。

2023-02-06 13:55:44 76

原创 算法刷题日志——dp

该问题等价于求解两字符的「最长公共子序列」,若两者长度分别为 n 和 m,而最长公共子序列长度为 max,则 n−max+m−max 即为答案。

2023-01-03 10:46:46 69

原创 算法刷题日志——dp

A 、B数组各抽出一个前缀子数组,单看它们的末尾项,如果它们俩不一样——以它们俩为末尾项形成的公共子数组的长度为0,如果它们俩一样,以它们俩为末尾项的公共子数组,长度保底为1。dp[i][j] :长度为i,末尾项为A[i-1]的子数组,与长度为j,末尾项为B[j-1]的子数组,二者的最大公共后缀子数组长度。这题遍历即可,如果数组中的数是递增的那就数量++,否则就重新开始计数。

2023-01-02 11:05:21 77

原创 算法刷题日志——dp

dp[i] 的值代表 nums 以 nums[i] 结尾的最长子序列长度。

2022-12-24 10:19:08 85

原创 算法刷题日志——dp

就比一般类型的买卖股票多了个手续费,卖出股票时需要减去手续费即可。

2022-12-22 09:04:24 86

原创 算法刷题日志——dp

情况三和情况一相似,区别之处是,对于情况三,每天有四个未知变量:T[i][1][0]、T[i][1][1]、T[i][2][0]、T[i][2][1],中间那一维是表示交易第几次,因为这题是要交易两次。昨天不持股,今天买入股票(注意:只允许交易一次,因此手上的现金数就是当天的股价的相反数)。这题的交易次数变成了无数次,其实和上题类似,注意状态转移方程的修改就好。昨天持股,今天什么都不做(现金数与昨天一样);昨天持股,今天卖出股票(现金数增加),昨天不持股,今天什么都不做;

2022-12-20 16:58:19 420

原创 算法刷题日志——dp

当前房子不偷,则对前一间房子的状态无要求,状态值为前一状态的较大值:f[i][0]=max⁡(f[i−1][0],f[i−1][1])f[i][0] = \max(f[i - 1][0], f[i - 1][1])f[i][0]=max(f[i−1][0],f[i−1][1])在第一题的基础上,房子变成环状,那么就要区分第一间房子选或不选,不需要添加多一维,只需要分开两种情况单独讨论即可。最终 max⁡(f[n][0],f[n][1])\max(f[n][0], f[n][1]) 即是答案。

2022-12-19 19:01:28 101

原创 算法刷题日志——dp

关于这个遍历循序,这里是先遍历物品,有关组合类的递推公式就都是类似于 dp[j] += dp[j - coins[i]];就是当前数的组合数是由前面累加的。如果求组合数就是外层for循环遍历物品,内层for遍历背包。如果求排列数就是外层for遍历背包,内层for循环遍历物品。

2022-12-13 18:57:27 116

原创 算法刷题日志——dp

即:sumA = (sum + target) / 2 ,自此,原问题可以转化为0-1背包问题: 有一些物品,第i个物品的重量为nums[i], 背包的容量为sumA,问:有多少种方式将背包【恰好填满】本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。

2022-11-23 12:10:38 80

原创 算法刷题日志——dp

综合两个公式可以得到 卡特兰数 公式 G(n)=G(0)∗G(n−1)+G(1)∗(n−2)+…+G(n−1)∗G(0)G(n) =当 i 为根节点时,其左子树节点个数为 i-1 个,右子树节点为 n-i,则 f(i)=G(i−1)∗G(n−i)f(i) =假设 n 个节点存在二叉排序树的个数是 G (n),令 f(i) 为以 i 为根的二叉搜索树的个数,则。这题可以抽象看成01背包问题。

2022-11-22 09:02:47 87

原创 算法刷题日志——贪心

如果 sum 0,则说明 sum 对结果有增益效果,则 sum 保留并加上当前遍历数字。动态规划的是首先对数组进行遍历,当前最大连续子序列和为 sum,结果为 ans。每次比较 sum 和 ans的大小,将最大值置为ans,遍历结束返回结果。

2022-11-20 10:06:11 200

原创 算法刷题日志——贪心

【代码】算法刷题日志——贪心。

2022-11-18 18:00:23 85

原创 算法刷题日志——贪心

和上题差不多,far代表的是能跳的最远距离,然后因为一定能到终点,end代表已经到了最远的地方就该跳跃了。如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。既然按照起始位置排序,那么就从前向后遍历气球数组,靠左尽可能让气球重复。num[i]+i 意思就是当前坐标位置加上当前坐标能跳的最远距离。当气球出现重叠,一起射,所用弓箭最少。如果可以一直跳到最后,就成功了。

2022-11-17 12:22:45 657

原创 算法刷题日志——贪心

排序完的people: [[7,0], [7,1], [6,1], [5,0], [5,2],[4,4]]插入[4,4]:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]就是对二维数组进行排序。插入[5,2]:[[5,0],[7,0],[5,2],[6,1],[7,1]]插入[5,0]:[[5,0],[7,0],[6,1],[7,1]]插入[6,1]:[[7,0],[6,1],[7,1]]插入[7,1]:[[7,0],[7,1]]插入[7,0]:[[7,0]]

2022-11-16 12:19:48 360

原创 算法刷题日志——贪心

然后只在 max arr[i + 1]arr[i]>arr[i+1],如果是,那么 idx 位置数字减 1,后面的位置全部置 9 即可。设 tmp 为第 i-1 日买入与第 i 日卖出赚取的利润,即 tmp = prices[i] - prices[i - 1];

2022-11-15 09:39:04 106

原创 算法刷题日志——贪心

如果是k是偶数次那就反复对同一个数进行取反 总体的sum不会改变,奇数次则会变成负的。贪心,局部最优推出全局最优,维护孩子的胃口,从最小开始一个个满足。第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小。第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完。第二步:从前向后遍历,遇到负数将其变为正数,同时K–其实就是找最多的高低节点。这题就是简单模拟我感觉。

2022-11-14 16:21:14 83

原创 算法刷题日志——回溯算法

本题求自增子序列,是不能对原数组经行排序的,这题可以不加终止条件,startIndex每次都会加1,并不会无限递归。而且map是记录本层元素是否重复使用,新的一层map都会重新定义(清空),所以要知道map只负责本层!Java中的Map提供了getOrDefault()方法,对不存在的键值提供默认值的方法。这里进行去重,有两种 一种用set进行去重,另外就是使用used数组进行判断去重。这里用map来代替一个判断去重的数组,存在就返回1,不存在则返回0来进行判断,used数组用来判断是否用过了。

2022-11-11 13:36:29 157

原创 算法刷题日志——回溯算法

仔细想想,如果used[i - 1]被标记为1, 说明该元素刚被使用过且未回溯,那么就算第i个元素和第i-1个元素相等,也可以放心大胆地加到sublist里面,因为加入以后一定比之前元素多一个,不会重复;相反,如果used[i - 1]被标记为0, 因为现在已经访问到之后的元素了,之前元素一定是被访问过的,那么被标0只有一种可能,就是该元素已经被回溯过了,此时必须跳过当前元素,否则会重复,因为list里面已经有相同的sublist.用dp提前判断好是否为回文。

2022-11-10 16:58:46 118

原创 算法刷题日志——回溯算法

【代码】算法刷题日志——回溯算法。

2022-11-07 12:57:16 152

原创 算法刷题日志——二叉树

我们以「从当前节点的左子树中选择值最大的节点」为例子,我们通过树的遍历,找到其位于「最右边」的节点,记为 ttt(ttt 作为最右节点,必然有 t.right = null),利用原本的 root 也是合法 BST,原本的 root.right 子树的所有及节点,必然满足大于 t.val,我们可以直接将 root.right 接在 t.right 上,并返回我们重接后的根节点,也就是 root.left。从「当前节点的右子树」中选择「值最小」的节点替代 root 的位置,确保替代后仍满足 BST 特性;

2022-11-04 11:25:50 337

原创 算法刷题日志——二叉树

【代码】算法刷题日志——二叉树。

2022-11-01 22:42:27 98

空空如也

空空如也

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

TA关注的人

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