- 博客(14)
- 收藏
- 关注
原创 代码随想录 算法小白第20天 最大二叉树 合并二叉树 二叉树中的搜索
二叉搜索树的特性 就是 左子树比根节点要下 右子树都是比根节点大。这里使用的是t1的 结构 没有重新定义一个新的二叉树。
2023-05-08 10:53:58
55
原创 代码随想录 第16天 二叉树的最大深度和最小深度 完全二叉树的节点
如果左孩子或者右孩子的左节点或者右节点先为空 那么说明 这个路径最短 只需要对当前高度加1。我们这里需要两个终止条件 一个是根节点为空 一个是 判断满二叉树 然后求节点 再去递归。求二叉树最大和最小深度 都是使用 后序遍历 左右中 代码更加简洁。需要判断左右节点 为空的情况 目的是找出叶子节点到根节点最短的路径。深度 怎么得到 只需要让高度 加1 因为根节点不是孩子。根节点的高度就是二叉树最大深度。后序遍历实际上求的是高度。所以返回的时候 要加1。
2023-05-04 12:01:44
59
原创 代码随想录 第15天 层序遍历翻转二叉树对称二叉树
比如说这张图 把 6放进去 记录大小1 然后弹出 放入 4.7记录size为2 以此类推。为啥要记录大小 因为每一层的节点数是不一样的 我们把节点都放入队列里。需要注意的是 我们还需要一个一维数组 记录弹出的元素。比较时 比较左孩子的左节点 与右孩子的右节点。很明显我们输出的内容是一个二维数组。作镜像的对比 其次左右节点需要相同。左孩子的右节点 和右孩子的左节点。并且需要记录 size 的大小。弹出元素时要考虑 是第几层的。排除node根节点为空的情况。层序遍历是一层一层的遍历。将根节点放入到队列里面。
2023-05-03 22:30:45
52
原创 代码随想录算法小白的第13天 二叉树的递归遍历 迭代遍历 统一迭代
平衡二叉搜索数 左右 节点 高度差不超过1。完全二叉树 从左到右的节点都是连续的。线性存储找左右叶子节点的 左 i。满二叉树 所有节点都有 左右节点。搜索二叉树 节点有序号。
2023-05-02 17:22:57
49
原创 代码随想录 算法小白的第12天算法之旅 239滑动窗口最大值 347前k个高频元素
java中poll 是移除并弹出头节点。需要提前知道java中优先队列。而peek是查看首个元素。
2023-05-01 22:01:07
65
原创 代码随想录 算法小白第11天20有效括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值
如果是 栈顶 元素多了一个右括号 ,就是多了左括号 如果是 发现栈顶元素 没有 不等于 就是中间 如果栈已经没有元素了 就是多了右边括号。简单来说就是 有三种情况不符合 多余 括号在左边,多余括号在中间,多余括号在右边 栈里只有右括号的元素。然后 让入栈的元素 和匹配的元素相反 就可以发现 是什么问题。这道题 解题思路 如果不会很难想的到。
2023-04-29 21:33:55
48
原创 算法小白的第10天 232.用栈实现队列 225. 用队列实现栈
定义两个栈 元素相同 但是顺序不同即可。关于java中 队列 和栈的apl。模拟队列 就是先进先出的过程。
2023-04-28 18:38:10
48
原创 代码随想录 算法小白的第8天算法之旅 344反转字符串541 05 替换空格 151.翻转字符串里的单词
首先这道题和反转字符串最大的区别就是,它规定了条件 是2k 2k 为单位的 反转 满足2k 反转 前k个 然后判断尾数满足 大于k 还是小于 k。end end 指针需要去判断 我们原来的长度 和 start+ k-1 (start指针 最后再加上一个k的长度) 的大小。我们仍然采用双指针的方法 , 来解决 问题 和第一题的 方法一样 定义 初始指针 start 和末尾指针。目的是判断最后的尾数 情况 是小于k 小于k 返回 原来的长度 大于k 返回 加上k的长度 然后反转。
2023-04-27 19:18:27
46
原创 算法小白第7天算法之旅 哈希表题目 454四数之和2 ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
因为题目规定的是四个不同的数组 所以首先不用考虑去重的问题 用哈希表的办法更快 只需要 他们加起来是0 即可 那么就统计前两个数之和 还有出现的频率 然后统计后两个数组的和 相加等于0 的次数。定义要给集合用来放 三元数组 先进行排序 然后遍历 元素 遍历元素时去重 a 注意去重时要比较前一个是不是 相等 如果 相等就去重。注意 最后都是在一个新的map集合中执行的操作 在map集合中 找相加为0的次数。
2023-04-26 15:17:36
41
原创 算法小白的第六天算法之旅力扣 哈希函数 242 349 202
` 所在的元素做+1 操作即可,并不需要记住字符a的ASCII,只要求出一个相对数值就可以了。那么最后检查一下,record数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。最后如果record数组所有元素都为零0,说明字符串s和t是字母异位词,return true。可以用set 解题也可以用数组解决。首先是set解决方法。
2023-04-25 21:43:51
50
原创 代码训练 算法小白的第四天算法之旅力扣 24两两交换链表中的节点 19 删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II
我们定义快慢指针 同时指向虚拟头节点 快指针先走 先走 n 步 然后快慢指针同时走 直到 快指针指向 null 这样做的原理是 快慢指针始终相隔 n 个节点 就可以找到倒数的第n个节点。问题的难点在于怎么找到要删除倒数第n个元素。解题思路 在代码中 解释。因为手打思路分析比较复杂。
2023-04-22 19:56:02
53
1
原创 代码随想录 算法小白的第三天学习 链表题目 203 移除链表元素 707设计链表 206 反转链表(Java语言)
知道了这个 我们来接这道题目。这道题目可以设置一个虚拟头节点 ,设置虚拟头节点的作用就是 可以让所有节点都可以被统一的方式处理。**再定义一个临时指针cur 用来遍历列表, 让cur等于虚拟头节点 为什么不是等于头节点。如果是等于头节点 如果要删除头节点的 就不好处理 ,所以直接让它从虚拟节点开始。现在开始循环· 前提条件是 cur不能为空 才可以继续循环下去。首先要知道删除元素怎么删的 , 简单来说 就是。如果cur等于 这个数值 就可以删除了** 最后。
2023-04-21 23:34:34
70
2
原创 代码随想录 算法小白的第二天算法之旅 977 有序数组的平方209长度最小的子数组 59 螺旋矩阵 + 数组总结
我们给这个数组开头和结尾一个指针,将开头第一个元素平方后赋给新的数组 ,新数组的长度和旧数组一样, 这样做的目的在于 方便排序 把这个数当作最大的 ,然后和旧数组最后一个元素平方比较 ,如果大 那就这个赋给新数组 如果小 就把大的赋给新数组。解题思路 :窗口滑动 也是双指针的变形 起始指针和终止指针都指向 数组的第一个元素 ,终止指针前移,算出终止到起始指针的元素总和 然后和目标进行对比 ,直到 比目标大 然后开始 移动 起始指针 算出起始到终止的位置。我们先来理解题目的意思。
2023-04-20 19:35:42
298
1
原创 代码随想录 算法小白的第一天算法之旅 704二分查找 27移除元素
这是一个小白的博客 来自一个想学好算法的苦逼大三,如果你也想学好算法,不妨来跟我一起学习。我将会用一个纯小白的思维 需要哪些前置知识,对于算法的疑惑,都会写在这系列博客中。
2023-04-19 11:27:43
613
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人