自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营Day32

模板做法,不需要切割,把每个数据都保存即可。

2023-09-26 18:45:49 95

原创 代码随想录算法训练营Day31

还有判断Vaild函数,注意判断属性,s.charAt(start) == ‘0’ 要在 len

2023-09-25 22:57:18 120

原创 代码随想录算法训练营Day30

【代码】代码随想录算法训练营Day30。

2023-09-24 17:21:55 101

原创 代码随想录算法训练营Day29

没有利用到sum参数,直接把target值减去加进来的数值即可。index + 1 表示 任意顺序即可,i+1 表示进入下一层。

2023-09-24 00:29:02 102

原创 代码随想录算法训练营Day28

设置多一个used数组,判断其是否用过。

2023-09-22 12:07:28 43

原创 代码随想录算法训练营Day27

这个也可以剪枝,通过将 i <= 9 改为 i <= 9 - (path.size() - k) +1。实际跟上一题做法相似。

2023-09-19 13:43:26 78

原创 代码随想录算法训练营Day26

n相当于宽度,k相当于高度。

2023-09-17 19:05:09 40

原创 代码随想录算法训练营Day25

这道题利用了反中序遍历,因此是右根左的顺序,需要一个全局变量读取数值。

2023-09-15 09:27:36 144

原创 代码随想录算法训练营Day24

类似二分的思想,先找到根节点(就是数组的中间值),然后再去构建子节点。

2023-09-14 10:01:16 66

原创 代码随想录算法训练营Day23

【代码】代码随想录算法训练营Day23。

2023-09-13 10:54:01 72

原创 代码随想录算法训练营Day22

这一题和上一题差不多,分三种情况。

2023-09-12 13:05:48 95

原创 代码随想录算法训练营Day21

难点:如何判断是否为祖先节点,利用二叉搜索树性质,左小右大。如果节点为空,则制造新的节点。

2023-09-11 15:44:01 84

原创 代码随想录算法训练营Day20

二叉搜索树的中序是 按照数组升序排列的这题利用指针的做法。

2023-09-05 14:52:04 40 1

原创 代码随想录算法训练营Day19

所以以上代码的判断逻辑是错误的。

2023-09-04 20:23:11 128 1

原创 代码随想录算法训练营Day18

跟上面那题类似,但是找的先序。

2023-09-02 15:54:32 39

原创 代码随想录算法训练营Day17

要知道最底层的话,需要另外设置Deep的值,进行比较。注意是左叶子节点,该节点没有其他子节点。

2023-09-01 10:59:41 43 1

原创 代码随想录算法训练营Day16

对于二叉树的所有路径中的每条路径,当遍历到叶子节点的时候为当前路径的结束。并且将当前路径加入结果集。在本题同样也是这个顺序:将根节点加入路径,递归左子树,递归右子树。前序遍历的顺序是:根节点、左子树、右子树。对于左子树和右子树来说,也都是同样的操作。

2023-08-31 21:05:01 46 1

原创 代码随想录算法训练营Day15

因为计算深度时,没算上根节点,所以最后要+1;终止条件 节点等于null。终止条件 节点为null。节点为空的情况有:(

2023-08-30 15:25:43 34 1

原创 代码随想录算法训练营Day14

根据做题发现后面pre.next=null可以省略,但省略后不好理解。Integer.MAX_VALUE为int类型最大值。116规定完整二叉树,117没规定,但其实做法是一样的。Integer.MIN_VALUE为int类型最小值。

2023-08-29 13:30:47 23

原创 代码随想录算法训练营Day13

层序遍历的时候,判断是否遍历到单层的最后面的元素,如果是,就放进result数组中,随后返回result就可以了。在for循环里的话可能影响到que.size()的值。一个节点有多个孩子而已。

2023-08-28 19:45:38 40 1

原创 代码随想录算法训练营Day12

终于学到二叉树了,基础的都学过了。

2023-08-27 16:47:10 53

原创 代码随想录算法训练营Day11

保持如上规则,每次窗口移动的时候,只要问que.front()就可以返回当前窗口的最大值。

2023-08-26 18:02:13 45

原创 代码随想录算法训练营Day10

第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false通过栈来比较,代码用的是碰到左括号,存右括号,当然也可以用碰到左括号,存左括号。

2023-08-25 19:12:09 58 1

原创 代码随想录算法训练营Day9

java中利用LinkedList来代替queue,需要重点掌握栈和队列的基本用法才行。

2023-08-24 20:54:36 30 1

原创 代码随想录算法训练营Day8

如果len % (len - (next[len - 1] + 1)) == 0 ,则说明数组的长度正好可以被 (数组长度-最长相等前后缀的长度) 整除 ,说明该字符串有重复的子字符串。没有使用kmp,推测needle含有haystack的子字符串,减去重复的,然后从头开始遍历两个数组是否。如果s存在重复子字符串,则next[len]肯定找到前序重复的,所有>0,存在重复子字符串,如果b直接到m就说明遍历结束。列表遍历拼接,也可以使用String,方法一样。

2023-08-23 21:55:36 29

原创 代码随想录算法训练营Day7

数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后再从后向前进行操作。另一个当字符少于k个 则全部反转,大于k小于2k,反转前k个。则属性r有区分,当大于k个执行后者,小于k个执行前者。最后的单词还有一个空格,需要再去一次前后空格。一个条件是每2k个字符就前k个字符反转,好处:不用申请新的数组,不需要直到长度。要先去除字符串前、内部、末尾的多余空格。采用双指针法,由两头向中间靠近。重点思考:r的属性分配。

2023-08-21 23:05:16 37 1

原创 代码随想录算法训练营Day6

用一个长度为26的数组还记录magazine里字母出现的次数,然后再用ransomNote去验证这个数组是否包含了ransomNote所需要的所有字母。在遍历C和D数组,如果找到 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。首先定义 一个Hashmap,key放a和b两数之和,value 放a和b两数之和出现的次数。遍历A和B数组,统计两个数组元素之和key,和出现的次数value,放到map中。需要注意的是去重逻辑与操作。

2023-08-20 22:41:45 33 1

原创 代码随想录算法训练营Day5

思路:数组就是一个简单的哈希表,映射的是26个字母在字符串中出现的次数,s串时+1,t串时-1,最后判断数组是否为0即可。我们不仅要知道元素有没有遍历过,还有知道这个元素对应的下标,该题的核心是判断sum是否重复出现。注意取一个数的各个位置上的数值的操作。为 {key:数据元素,value:数组元素对应的下表}一个集合来存放我们遍历过的元素,然后在遍历数组的时候去。1.为什么用HashMap,可以保存数组元素和位置,通过两个循环遍历每一个元素,找到符合条件的答案。哈希法(时间复杂度为 O(1)

2023-08-19 17:07:17 109

原创 代码随想录算法训练营Day4

时间复杂度 O(N) :第二次相遇中,慢指针须走步数 x第一次相遇中,慢指针须走步数 x+y,其中 x为双指针重合点与环入口距离;如果是奇数节点,那么cur.next.next=null则结束,cur.next不作交换。x=z,所以后面又取头节点,然后再移动节点,直到相遇则是入口节点。若是偶数节点,则cur.next=null结束。当他们在同一位置上移动时,则可以找到是否右节点它们相同。空间复杂度 O(1) :双指针使用常数大小的额外空间。要思考清楚谁先谁后。光看题是有点抽象,很难想到何时达到入口节点。

2023-08-18 22:42:28 36 1

原创 代码随想录算法训练营day2

其中为什么是while(sum >= target)因为容易存在target=101,nums=[1,1,1,1,100]的数组问题,看到题目想考虑双指针,数组其实是有序的, 只不过负数平方之后可能成为最大数了。坚持循环不变量原则,每条边都坚持左闭右开,这样一圈下来才能按照统一规则画下来。数组主要还是双指针算法,考虑边界问题还有条件的问题,这道题不是快慢指针的形式,而是头尾指针向中间夹逼,如果是if则无法解决此问题,所以用while。所以循环条件与之前不同。

2023-08-17 21:47:07 33 1

原创 代码随想录算法训练营day1

二分法同时涉及了很多关于边界的条件,因此区间分为两种左闭右闭[left,right]和左闭右开[left,right)第二种边界为[left, right)使用条件:1.有序数组,2.无重复。主要有时候边界问题没有判断清楚,

2023-08-17 21:25:14 43 1

原创 代码随想录 第三天

这道题,需要记住设置一个虚拟头指针,然后用虚拟头指针遍历链表,(务必不能使用head遍历,如果用了,则改变了head节点值,影响后续操作),因此需要利用其他指针获取head节点,来进行操作。因为cur节点此时的next已经是pre节点,不是原先的数,所以不可以取cur.next。2.关键: 不能利用head节点遍历链表,还是要用其他指针取head节点。上学期刚学完数据结构,印象还是有点的,做起来也没想象的难。java比c++设置链表简单,不需要考虑释放节点。1.注意边界问题,这个方面还是不太行。

2023-08-17 20:42:26 23

空空如也

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

TA关注的人

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