- 博客(46)
- 收藏
- 关注
原创 算法五大排序(Java)
思路:在一个数组中,将当前的索引的值与后一个做比较如果更大就交换,直到交换到最后一位。详细实现:第一个for循环控制总体遍历的次数。为什么是判断条件是n - 1呢?因为只剩一个数的时候就不需要进行排序了。第二个for循环是为了交换元素,比较大小,大的向后移动。为什么要引入swaped变量呢?是一种优化思路,如果是个有序数组,就不用交换了。节约资源消耗。
2024-10-24 00:37:50
349
1
原创 Day43 | 42. 接雨水 84.柱状图中最大的矩形
单调栈今天就结束了,这两道题还是非常有难度的,不愧为经典的hard题。明天图论继续加油!
2024-08-20 13:43:58
468
原创 Day42 | 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II
今天开启了单调栈,做起来有点懵懵的。等过几天回来再好好刷几遍。继续加油!
2024-08-19 18:24:14
904
原创 代码随想录 八股文训练营40天总结
从一开始回答问题支支吾吾到现在可以流利有思路的回答问题,还可以反复改正自己的坏的表达习惯。从计算机网络-操作系统-MySQL-Redis-Java基础-JUC-JVM-SSM。通过对着电脑录音这种模式,我可以听出来自己的回答有哪些不足,逐步完善自己的回答。有的题目看起来是会了,但实际上说的时候讲的很乱。希望卡哥训练营的题越来越多,训练营越办越好!还有很多关于英文的读音被发现出来不太娴熟。训练营中的题目都是非常经典的。
2024-08-17 09:26:48
713
原创 Day40 | 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离
明天继续动态规划。今天的题依然是有难度的,等二刷的时候回来好好复习。加油!一定能成功!
2024-08-16 18:33:12
1178
原创 Day39 | 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 392.判断子序列
开启了子序列问题明天继续动态规划!坚持就是胜利。
2024-08-15 17:44:58
935
原创 Day37 | 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费
买卖股票系列终于完结了。明天继续动态规划加油加油!
2024-08-13 20:47:46
907
原创 Day36 | 121. 买卖股票的最佳时机 122.买卖股票的最佳时机II 123.买卖股票的最佳时机III
前两道题稍微简单一点,最后一道题有点难度。总体来说股票问题还是比较难想的。继续加油明天!
2024-08-12 20:48:44
1507
原创 Day33 | 完全背包 518. 零钱兑换 II 377. 组合总和 Ⅳ 70. 爬楼梯 (进阶)
今天练了完全背包问题,明天继续动规问题。加油!
2024-08-08 13:59:57
599
原创 Day32 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零
最后一块石头的重量 II还是01背包问题的应用。继续努力!
2024-08-07 23:20:28
1082
原创 Day26 | 贪心算法 134. 加油站 135. 分发糖果 860.柠檬水找零 406.根据身高重建队列
贪心第三天,继续加油!勤于思考,敢想敢做。
2024-07-31 18:48:09
702
原创 Day25 | 贪心算法 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II 1005.K次取反后最大化的数组和
它山之石,可以攻玉。
2024-07-30 14:18:52
988
原创 Day24 | 贪心算法455.分发饼干 376. 摆动序列 53. 最大子序和
今天开始了贪心算法的学习。继续加油!操千曲而后晓声、观千剑而后识器。
2024-07-29 15:06:22
626
原创 Day19 | 77. 组合 216.组合总和III 17.电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。递归参数:题目给的字符串,创建的数字对应的字母,遍历字符串时用的索引。用for循环减少满足的位置,用递归进行添加到数组中,再进行回溯。回溯题目,本文依然采取递归加回溯的方法,并且进行剪枝。本题依然采取递归的方法完成,创建一个数组接收结果。递归终止条件:将字符串遍历完,将结果添加到数组中。定义的是可变数组,剪枝操作那里要记住索引+1。回溯算法,其实也是递归的思想加上回溯。递归终止条件是索引等于字符串的长度。单层递归:for循环加上内层递归。
2024-07-24 20:35:27
1042
原创 Day18 | 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
二叉树章节结束啦!!完结撒花没有量化,就没有改进。
2024-07-23 15:11:55
790
原创 Day17 | 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
越刷思路越清晰,继续加油!不积细流,无以成江河。
2024-07-22 11:53:47
884
原创 Day15 | 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树
合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;本题还是采用递归法,创建一个空节点,先判断是否为空为空是二叉搜索树,与后一个节点的值作比较。先判断数组中是否含有元素,没有直接返回空,再判断是否只有一个元素,是的话直接构建节点。定义一个最大索引和最大值,通过循环判断,最大值在数组的哪个位置,找到最大值的索引。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。递归参数:数组,左索引,右索引。构建以最大值为根节点的二叉树,然后开始向左递归,再向右递归。
2024-07-19 13:17:16
587
原创 Day14 | 找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树
给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。本题有两种做法我主要讲一下递归的思路,创建两个全局变量,一个用于存树的深度,一个用于记录最下层最左树的值depth。递归终止条件:树的左右子树都为空。递归参数:节点,深度。单层递归:先判断左右子树是否为空,为空了代表下面没有子树了,这时比较当前深度和全局变量的深度哪个大,当前深度大的话赋值给全局变量,也把值赋值给depth.然后判断左子树是否为空不为空的话进行递归,需要进行回溯操作。右子树同理。具体细节看代码。
2024-07-18 18:43:45
899
原创 Day13 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
判断根节点是否为空,为空的话直接返回空数组。先判断节点是否为空为空返回0,采用后序遍历,左右中的方式,递归左右子树,判断如果左右子树是否不平衡。的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。单层递归:先把节点数组加到路径数组中,判断左右子节树是否都为空,为空输出路径。注意判断条件,左节点不为空,左节点的的子树为空。
2024-07-17 12:39:36
790
原创 Day12 | 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度
这次用递归法解决了这四道题,下次我会用迭代法解决,敬请期待。
2024-07-16 21:10:21
367
原创 Day11 | 二叉树 递归遍历 迭代遍历 统一迭代 层序遍历
在方法中先判断终止条件即节点不为空,因为是中序就左中右,先调用递归函数参数是左节点、ArrayList,再添加节点的值到ArrayList中,最后再调用递归函数参数是右节点、ArrayList。在循环里:先将根节点弹出,值放入数组中,判断如果右节点不为空放入右节点,再判断左节点,不为空把左节点放到栈中。依然采取栈的数据结构,我们将访问的节点放入栈中,把要处理的节点也放入栈中但是要做标记。判断节点是否为空,若不为空,将节点加入到栈中,节点向左子树遍历。首先创建一个数组,判断根节点是否为空,为空返回空数组。
2024-07-15 17:38:47
636
原创 Day10 | 150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
栈和队列今天就算完结了,今天我体会到了写注释的重要性,以后的代码我会多多写注释,来保证思路的完整性。继续加油!我亦无他唯手熟而。
2024-07-13 12:45:11
1045
原创 Day09 | 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
今天开篇了栈和队列,这几道题主要是思路的模拟。先想好思路还是比较容易地。明天继续加油,万丈高楼平地起。
2024-07-12 23:28:46
566
原创 Day08 | 151.翻转字符串里的单词 卡码网:55.右旋转字符串
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。1.removeSpace()中先去前后的空格,注意循环判断条件是小于等于。先将多余的空格删除,翻转整个字符串,逐个翻转内部的字符串。先整体翻转,在翻转前k个,最后翻转剩下的。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。时间复杂度: O(n)空间复杂度: O(n)翻转 的时候看好区间。时间复杂度: O(n)空间复杂度: O(n)
2024-07-11 17:35:39
402
原创 Day07 | 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
遍历的条件是每次加2k个,先判断s是大于k 如果大于将前K个数通过reverse方法进行反转。先获得输入的s长度,用 变量len存长度,进行扩容,创建一个字符数组,把字符串的字符放进去,再通过循环判断来替换数字最后输出这个字符数组。其实很多数组填充类的问题,其做法都是先预先给数组扩容带填充后的大小,然后在从后向前进行操作。一开始我打算再创个数组,反向遍历一下再放入,后发现不能格外分配空间。用双指针法,循环将数组的第一个数和最后一个数进行交换就好了。、使用 O(1) 的额外空间解决这一问题。
2024-07-10 16:06:07
566
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人