![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
Nruonan
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营Day32
模板做法,不需要切割,把每个数据都保存即可。原创 2023-09-26 18:45:49 · 119 阅读 · 0 评论 -
代码随想录算法训练营Day31
还有判断Vaild函数,注意判断属性,s.charAt(start) == ‘0’ 要在 len原创 2023-09-25 22:57:18 · 147 阅读 · 0 评论 -
代码随想录算法训练营Day30
【代码】代码随想录算法训练营Day30。原创 2023-09-24 17:21:55 · 124 阅读 · 0 评论 -
代码随想录算法训练营Day29
没有利用到sum参数,直接把target值减去加进来的数值即可。index + 1 表示 任意顺序即可,i+1 表示进入下一层。原创 2023-09-24 00:29:02 · 131 阅读 · 0 评论 -
代码随想录算法训练营Day28
设置多一个used数组,判断其是否用过。原创 2023-09-22 12:07:28 · 55 阅读 · 0 评论 -
代码随想录算法训练营Day27
这个也可以剪枝,通过将 i <= 9 改为 i <= 9 - (path.size() - k) +1。实际跟上一题做法相似。原创 2023-09-19 13:43:26 · 94 阅读 · 0 评论 -
代码随想录算法训练营Day26
n相当于宽度,k相当于高度。原创 2023-09-17 19:05:09 · 52 阅读 · 0 评论 -
代码随想录算法训练营Day25
这道题利用了反中序遍历,因此是右根左的顺序,需要一个全局变量读取数值。原创 2023-09-15 09:27:36 · 170 阅读 · 0 评论 -
代码随想录算法训练营Day24
类似二分的思想,先找到根节点(就是数组的中间值),然后再去构建子节点。原创 2023-09-14 10:01:16 · 80 阅读 · 0 评论 -
代码随想录算法训练营Day23
【代码】代码随想录算法训练营Day23。原创 2023-09-13 10:54:01 · 91 阅读 · 0 评论 -
代码随想录算法训练营Day22
这一题和上一题差不多,分三种情况。原创 2023-09-12 13:05:48 · 114 阅读 · 0 评论 -
代码随想录算法训练营Day21
难点:如何判断是否为祖先节点,利用二叉搜索树性质,左小右大。如果节点为空,则制造新的节点。原创 2023-09-11 15:44:01 · 109 阅读 · 0 评论 -
代码随想录算法训练营Day20
二叉搜索树的中序是 按照数组升序排列的这题利用指针的做法。原创 2023-09-05 14:52:04 · 49 阅读 · 1 评论 -
代码随想录算法训练营Day19
所以以上代码的判断逻辑是错误的。原创 2023-09-04 20:23:11 · 152 阅读 · 1 评论 -
代码随想录算法训练营Day18
跟上面那题类似,但是找的先序。原创 2023-09-02 15:54:32 · 50 阅读 · 0 评论 -
代码随想录算法训练营Day17
要知道最底层的话,需要另外设置Deep的值,进行比较。注意是左叶子节点,该节点没有其他子节点。原创 2023-09-01 10:59:41 · 54 阅读 · 1 评论 -
代码随想录算法训练营Day16
对于二叉树的所有路径中的每条路径,当遍历到叶子节点的时候为当前路径的结束。并且将当前路径加入结果集。在本题同样也是这个顺序:将根节点加入路径,递归左子树,递归右子树。前序遍历的顺序是:根节点、左子树、右子树。对于左子树和右子树来说,也都是同样的操作。原创 2023-08-31 21:05:01 · 57 阅读 · 1 评论 -
代码随想录算法训练营Day15
因为计算深度时,没算上根节点,所以最后要+1;终止条件 节点等于null。终止条件 节点为null。节点为空的情况有:(原创 2023-08-30 15:25:43 · 48 阅读 · 1 评论 -
代码随想录算法训练营Day14
根据做题发现后面pre.next=null可以省略,但省略后不好理解。Integer.MAX_VALUE为int类型最大值。116规定完整二叉树,117没规定,但其实做法是一样的。Integer.MIN_VALUE为int类型最小值。原创 2023-08-29 13:30:47 · 31 阅读 · 0 评论 -
代码随想录算法训练营Day13
层序遍历的时候,判断是否遍历到单层的最后面的元素,如果是,就放进result数组中,随后返回result就可以了。在for循环里的话可能影响到que.size()的值。一个节点有多个孩子而已。原创 2023-08-28 19:45:38 · 50 阅读 · 1 评论 -
代码随想录算法训练营Day12
终于学到二叉树了,基础的都学过了。原创 2023-08-27 16:47:10 · 65 阅读 · 0 评论 -
代码随想录算法训练营Day11
保持如上规则,每次窗口移动的时候,只要问que.front()就可以返回当前窗口的最大值。原创 2023-08-26 18:02:13 · 52 阅读 · 0 评论 -
代码随想录算法训练营Day10
第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。所以return false第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false通过栈来比较,代码用的是碰到左括号,存右括号,当然也可以用碰到左括号,存左括号。原创 2023-08-25 19:12:09 · 70 阅读 · 1 评论 -
代码随想录算法训练营Day9
java中利用LinkedList来代替queue,需要重点掌握栈和队列的基本用法才行。原创 2023-08-24 20:54:36 · 36 阅读 · 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 · 42 阅读 · 0 评论 -
代码随想录算法训练营Day7
数组填充类的问题,都可以先预先给数组扩容带填充后的大小,然后再从后向前进行操作。另一个当字符少于k个 则全部反转,大于k小于2k,反转前k个。则属性r有区分,当大于k个执行后者,小于k个执行前者。最后的单词还有一个空格,需要再去一次前后空格。一个条件是每2k个字符就前k个字符反转,好处:不用申请新的数组,不需要直到长度。要先去除字符串前、内部、末尾的多余空格。采用双指针法,由两头向中间靠近。重点思考:r的属性分配。原创 2023-08-21 23:05:16 · 46 阅读 · 1 评论 -
代码随想录算法训练营Day5
思路:数组就是一个简单的哈希表,映射的是26个字母在字符串中出现的次数,s串时+1,t串时-1,最后判断数组是否为0即可。我们不仅要知道元素有没有遍历过,还有知道这个元素对应的下标,该题的核心是判断sum是否重复出现。注意取一个数的各个位置上的数值的操作。为 {key:数据元素,value:数组元素对应的下表}一个集合来存放我们遍历过的元素,然后在遍历数组的时候去。1.为什么用HashMap,可以保存数组元素和位置,通过两个循环遍历每一个元素,找到符合条件的答案。哈希法(时间复杂度为 O(1)原创 2023-08-19 17:07:17 · 133 阅读 · 0 评论 -
代码随想录算法训练营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 · 45 阅读 · 1 评论 -
代码随想录算法训练营day2
其中为什么是while(sum >= target)因为容易存在target=101,nums=[1,1,1,1,100]的数组问题,看到题目想考虑双指针,数组其实是有序的, 只不过负数平方之后可能成为最大数了。坚持循环不变量原则,每条边都坚持左闭右开,这样一圈下来才能按照统一规则画下来。数组主要还是双指针算法,考虑边界问题还有条件的问题,这道题不是快慢指针的形式,而是头尾指针向中间夹逼,如果是if则无法解决此问题,所以用while。所以循环条件与之前不同。原创 2023-08-17 21:47:07 · 42 阅读 · 1 评论 -
代码随想录算法训练营day1
二分法同时涉及了很多关于边界的条件,因此区间分为两种左闭右闭[left,right]和左闭右开[left,right)第二种边界为[left, right)使用条件:1.有序数组,2.无重复。主要有时候边界问题没有判断清楚,原创 2023-08-17 21:25:14 · 54 阅读 · 1 评论 -
代码随想录 第三天
这道题,需要记住设置一个虚拟头指针,然后用虚拟头指针遍历链表,(务必不能使用head遍历,如果用了,则改变了head节点值,影响后续操作),因此需要利用其他指针获取head节点,来进行操作。因为cur节点此时的next已经是pre节点,不是原先的数,所以不可以取cur.next。2.关键: 不能利用head节点遍历链表,还是要用其他指针取head节点。上学期刚学完数据结构,印象还是有点的,做起来也没想象的难。java比c++设置链表简单,不需要考虑释放节点。1.注意边界问题,这个方面还是不太行。原创 2023-08-17 20:42:26 · 35 阅读 · 0 评论