- 博客(20)
- 收藏
- 关注
原创 代码随想录算法训练营第二十一天 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
【代码】代码随想录算法训练营第二十一天 | ● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先。
2023-11-21 23:20:07 90 1
原创 啊?!(关于不同数据类型转换的困惑)
这是我写的代码,我发现运行出来的结果是6,于是debug一下,我人都麻了,当n = 3时,big=27,s=5.1961524....,然后居然s*s==big,然后count+1。:统计从1到N的整数中,所有立方值的平方根为整数的数的个数。:符合条件的数的个数,如43=64=82。:样例中符合条件的3个数是1、4、9):整数N(N
2023-11-20 17:26:10 96 1
原创 代码随想录算法训练营第一天 | 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树
700.二叉搜索树中的搜索。● 617.合并二叉树。98.验证二叉搜索树。
2023-11-18 18:22:46 81 1
原创 代码随想录算法训练营第十八天|● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
容易错误的认为一直使用递归向左孩子找,就是最后的结果,但是有可能找到的并不是最后一行。那么我们就要判断一下(首先是最后一行然后是位置最左),这道题最容易想的其实是层序法(迭代)。● 106.从中序与后序遍历序列构造二叉树。105.从前序与中序遍历序列构造二叉树。513.找树左下角的值。
2023-11-18 18:09:34 65 1
原创 代码随想录算法训练营第一天|● 104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
222.完全二叉树的节点个数。559.n叉树的最大深度。111.二叉树的最小深度。104.二叉树的最大深度。
2023-11-12 21:52:17 39
原创 代码随想录算法训练营第十五天|10,层序遍历 226,翻转二叉树 101,对称二叉树 2
【代码】代码随想录算法训练营第十五天|10,层序遍历 226,翻转二叉树 101,对称二叉树 2。
2023-11-09 23:56:52 48 1
原创 代码随想录算法训练营第十二天 |● 239. 滑动窗口最大值● 347.前 K 个高频元素
本题是 大数据中取前k值 的经典思路,了解想法之后,不算难。大/小顶堆的应用, 在C++中就是优先级队列。之前讲的都是栈的应用,这次该是队列的应用了。347.前 K 个高频元素。239. 滑动窗口最大值。
2023-11-06 20:55:31 89
原创 代码随想录算法训练营第十一天 ● 20. 有效的括号● 1047. 删除字符串中的所有相邻重复项● 150. 逆波兰表达式求值
要知道栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。(三道题都适用这个结论)分类出不符合情况的条件,然后如果遍历到"("则放入")"......这样可以方便查找时代码的简练。150. 逆波兰表达式求值。
2023-11-05 21:06:38 41
原创 代码随想录算法训练营第十天|232.用栈实现队列, 225. 用队列实现栈
用两个队列来实现栈的操作,一个是放和真正队列一样数据的栈,另一个是辅助队列来给主队列腾位置。用一个队列其实就可以,把它放在后面,然后一次放到后面,一遍过后,出来的就是队列的顺序。用两个栈来实现队列操作(类似于负负得正)225. 用队列实现栈。
2023-11-04 20:11:53 52 1
原创 代码随想录算法训练营第九天28. 实现 strStr(),459.重复的子字符串
28. 实现 strStr()注意区分kmp与滑动窗口的区别。459.重复的子字符串。
2023-11-03 23:12:42 60
原创 代码随想录算法训练营第八天 | ● 344.反转字符串● 541. 反转字符串II● 151.翻转字符串里的单词
第二个方法,用了整体反转然后再,每个单词反转,然后再通过双指针,去除空格元素。左右指针法,同时往里面逼近,注意边界条件。541. 反转字符串II。非常妙,不要把它想复杂了。
2023-11-03 22:18:50 66
原创 代码随想录算法训练营第七天 | 454,383,15,18
要比较一下,本题和 454.四数相加II 的区别,为什么 454.四数相加II 会简单很多,这个想明白了,对本题理解就深刻了。本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使用哈希法 会提高空间复杂度,但一般来说我们都是舍空间 换时间, 工业开发也是这样。本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。
2023-11-01 20:41:32 105 1
原创 代码随想录算法训练营第六天 | 242,349,202,1
map ,map是一种key value的存储结构,可以用key保存数值,用value在保存数值所在的下标。哈希表法,使用数组接收字符串映射。1.两数之和 (梦开始的地方。242.有效的字母异位词。349.两个数组的交集。使用set,也是哈希表。
2023-10-31 23:41:23 203 1
原创 代码随想录算法训练营第四天 | 24,19,142,链表相交
重点在于怎么找到倒数第n个节点的前一个结点,方法:定义快慢指针,让快指针走n+1步后,快慢指针再一起走,知道快指针走到空。24. 两两交换链表中的节点。19.删除链表倒数第n个节点。
2023-10-29 21:00:05 50 1
原创 代码随想录算法训练营第三天 | 203移除链表元素,707设计链表,206反转链表
虚拟节点,好处是可以统一操作,不用判断是否是头节点(比如在删除节点操作中需要两个不同的操作)双指针法(也是三指针,temp用来让cur找到下一个节点)递归方法(比较难,不是很懂)
2023-10-28 22:28:41 458
原创 代码随想录算法训练营第二天 | 977有序数组的平方,209长度最小的子数组,59螺旋矩阵2
与二分法思路是一样的,不要随便改条件,确定了就不要再改了,否则容易错,复杂(也不是一定会错)。这道题我们用左闭右开,以C++为例。上边代码是错误的,注意里面的left,right变化nums[left++]后面还有一个[left++],所以相当于加了2。暴力解法比较好理解,把所有的子数组全部枚举出来,然后找最小值。上边是正确代码,赋值完后再+1。
2023-10-27 00:10:08 734 1
原创 代码随想录算法训练营第一天 |力扣|704.二分查找,27.移除元素
大体思路没有问题,但是细节上有一个问题举个例子left = mid + 1;,因为left增加1,mid增加0.5,取整后就很有可能会mid“停滞不前”,无法更新。所以可以根据边界写,有两种(也可以说有三种,左开右闭比较少)——左闭右闭,左闭右开,分别对应(分别用了两种语言)暴力法很简单,一个for寻找要删除的元素元素另一个for把后面的元素往前移。二分查找涉及的很多的边界条件,逻辑比较简单,但就是写不好。还有就是快慢指针法,更快,用了两个指针可以减少一层循环。
2023-10-26 00:12:13 895
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人