wuyijia

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

05 2023 档案

代码随想录算法训练营第二十一天|530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先
摘要:【参考链接】 530. 二叉搜索树的最小绝对差 【注意】 1.二叉搜索树采用中序遍历,其实就是一个有序数组。 2.使用双指针,更快。 【代码】 1 # Definition for a binary tree node. 2 # class TreeNode(object): 3 # def __i 阅读全文

posted @ 2023-05-30 11:46 小吴要努力 阅读(5) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第二十天|654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
摘要:【参考链接】 654. 最大二叉树 【注意】 1.构造二叉树,都需要用前序遍历。 2.二叉树的根是数组中的最大元素。 3.没必要构造新数组,通过下标控制左右区间。运行效率会高很多。 【代码】 1 # Definition for a binary tree node. 2 # class TreeN 阅读全文

posted @ 2023-05-29 13:18 小吴要努力 阅读(7) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十八天|513. 找树左下角的值、112. 路径总和、113. 路径总和 II、106. 从中序与后序遍历序列构造二叉树、105. 从前序与中序遍历序列构造二叉树
摘要:【参考链接】 513. 找树左下角的值 【注意】 1.用递归的话就就一直向左遍历,但是到最后一个,它未必是最后一行。是要找到树的最后一行的最左边的值。(不一定是指是左孩子) 2.如果使用递归法,如何判断是最后一行呢,其实就是深度最大的叶子节点一定是最后一行。 3.只要是优先遍历左都可以,所以前中后序 阅读全文

posted @ 2023-05-28 16:07 小吴要努力 阅读(7) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十七天|110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
摘要:【参考链接】 110. 平衡二叉树 【注意】 1.一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 2.求高度一定要用后序遍历。 【代码】 1 # Definition for a binary tree node. 2 # class TreeNode(obj 阅读全文

posted @ 2023-05-27 19:59 小吴要努力 阅读(8) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十六天|104. 二叉树的最大深度、559. N 叉树的最大深度、111. 二叉树的最小深度、222. 完全二叉树的节点个数
摘要:【参考链接】 104. 二叉树的最大深度 【注意】 1. 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)。 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)。 2.根节点的高度就是二叉树的 阅读全文

posted @ 2023-05-26 17:17 小吴要努力 阅读(11) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十五天|102. 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树
摘要:【参考链接】 102. 二叉树的层序遍历 【注意】 1.队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。 2.遍历的时候要记录队列的大小。就可以知道哪些元素是第几层的。 3.记得首先要判断 阅读全文

posted @ 2023-05-25 19:42 小吴要努力 阅读(8) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十四天|144. 二叉树的前序遍历、145. 二叉树的后序遍历、94. 二叉树的中序遍历
摘要:【参考链接】 1.满二叉树,完全二叉树,二叉搜索树(有数值,有序树)。 2.平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 3.优先级队列其实是一个堆 阅读全文

posted @ 2023-05-23 14:33 小吴要努力 阅读(12) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十三天|239. 滑动窗口最大值、347. 前 K 个高频元素
摘要:【参考链接】 239. 滑动窗口最大值 【注意】 1.使用单调队列的经典题目。 2.大顶堆每次只能弹出最大值,无法移除其他数值,造成大顶堆维护的不是滑动窗口里面的数值了。所以不能用大顶堆。 3.需要一个队列,放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最大 阅读全文

posted @ 2023-05-22 10:24 小吴要努力 阅读(11) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十一天|20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
摘要:【参考链接】 20. 有效的括号 【注意】 1.括号匹配是使用栈解决的经典问题。 2.这个命令最后进入a目录,系统是如何知道进入了a目录呢 ,这就是栈的应用(其实可以出一道相应的面试题了)。 3.有三种不匹配的情况,第一种情况,字符串里左方向的括号多余了 ;第二种情况,括号没有多余,但是 括号的类型 阅读全文

posted @ 2023-05-20 13:15 小吴要努力 阅读(13) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第十天|232. 用栈实现队列、225. 用队列实现栈
摘要:【参考链接】 1.栈提供push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。 不像是set 或者map 提供迭代器iterator来遍历所有元素。 2.栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说 阅读全文

posted @ 2023-05-19 13:18 小吴要努力 阅读(13) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第九天|28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串
摘要:【参考链接】 28. 找出字符串中第一个匹配项的下标 【注意】 1.kmp解决的就是字符串匹配的问题。 2.kmp如何知道匹配过哪些字符串,并跳到匹配过的内容后面的字符。 前缀表 3.找到一个子字符串里它的最长相等前后缀。 4.前缀是包含首字母,不包含尾字母的所有子串;后缀只包含尾字母,不包含首字母 阅读全文

posted @ 2023-05-18 13:35 小吴要努力 阅读(13) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第八天|344. 反转字符串、541. 反转字符串 II、剑指 Offer 05. 替换空格、151. 反转字符串中的单词
摘要:【参考链接】 344. 反转字符串 【注意】 1.双指针法,原地进行操作。 2.字符串也是一种数组,所以元素在内存中是连续分布。 【代码】 return s.reverse() 1 class Solution(object): 2 def reverseString(self, s): 3 """ 阅读全文

posted @ 2023-05-17 20:48 小吴要努力 阅读(15) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第七天|454. 四数相加 II、383. 赎金信、15. 三数之和、18. 四数之和
摘要:【参考链接】 454. 四数相加 II 【注意】 1.a+b作为key,出现次数作为value,0-(c+d)有没有在map集合里出现过,出现的次数做统计。遍历两个数组时间复杂度为O(n2)。 【代码】 1 class Solution(object): 2 def fourSumCount(sel 阅读全文

posted @ 2023-05-16 13:22 小吴要努力 阅读(13) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第六天|242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
摘要:【知识点】 1.当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。 2.哈希法也是牺牲了空间换取了时间,因为要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。 3.三种常用数据结构:数组,set,map 参考链接 242. 有效的字母异位词 【注意】 1.在has 阅读全文

posted @ 2023-05-15 15:35 小吴要努力 阅读(10) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第四天|24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142. 环形链表 II
摘要:24. 两两交换链表中的节点 【注意】 1.操作指针一定要指向要反转两个结点的前一个结点 2.遍历链表的时候什么时候终止,cur.next.next == None ,则遍历结束(n为奇数),cur.next == None(n为偶数)。 3.时间复杂度O(n),空间复杂度O(1) 【代码】 1 # 阅读全文

posted @ 2023-05-14 20:31 小吴要努力 阅读(10) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第三天|203.移除链表元素 、707.设计链表 、206.反转链表
摘要:一.链表基础 1.最后一个节点的指针域指向null(空指针的意思)。 2.链表在内存中不是连续分布的。 3.链表的长度可以是不固定的,并且可以动态增删, 适合数据量不固定,频繁增删,较少查询的场景。 1 #链表节点的定义 2 class ListNode: 3 def __init__(self, 阅读全文

posted @ 2023-05-12 19:58 小吴要努力 阅读(17) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第二天|977. 有序数组的平方、209. 长度最小的子数组、 59.螺旋矩阵II
摘要:977. 有序数组的平方 【不足】 1.双指针没掌握到精髓:left = 0, right = len(nums) -1 (不是 right = 0 ) 【参考资料】 代码随想录 【代码】 1 class Solution(object): 2 def sortedSquares(self, num 阅读全文

posted @ 2023-05-11 15:29 小吴要努力 阅读(15) 评论(0) 推荐(0) 编辑

代码随想录算法训练营第一天|704.二分查找、27.移除元素
摘要:704-二分查找 讲解链接 【要点】 1.使用二分法的前提:数组要有序,且无重复元素 2.算法复杂度: 时间复杂度:O(log n) 空间复杂度:O(1) 【注意】 1.在二分法后续处理中可能会导致middle的范围超过 int 的数据范围。见如下, 1 int middle = left + (( 阅读全文

posted @ 2023-05-10 18:17 小吴要努力 阅读(26) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示