
代码随想录训练营
是东东东啊
失败了就继续努力,漫漫长路何愁无期。
展开
-
day13 二叉树(递归+回溯)
思路:分别求出该二叉树得左右子树得高度再求其绝对值之差来判断。而高度是指该节点到叶子节点得最长路径。所以这里选择后序遍历。在遍历得过程中如果有某棵子树得高度差返回为-1,则该树不是平衡二叉树。每次遍历到叶子节点收集完一条路径我们需要往回跑去遍历其它的路径。平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。思路:先统计左子树的左叶子节点之和再统计右子树,最后相加。如何判断是否是左叶子节点?根据叶子节点的父节点判断。需要思考得是递归得单层逻辑以及终止条件。以下题目均采用递归方法。原创 2023-04-09 17:17:08 · 64 阅读 · 0 评论 -
day12 二叉树
因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。节点为空的情况有:(注意我们比较的其实不是左孩子和右孩子,所以如下我称之为左节点右节点)此时才进入单层递归的逻辑,单层递归的逻辑就是处理 左右节点都不为空,且数值相同的情况。比较二叉树外侧是否对称:传入的是左节点的左孩子,右节点的右孩子。左节点为空,右节点不为空,不对称,return false。比较内测是否对称,传入左节点的右孩子,右节点的左孩子。原创 2023-04-03 21:28:28 · 58 阅读 · 0 评论 -
day11 二叉树
2>确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。<1>确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。<3>确定单层递归的逻辑: 确定每一层递归需要处理的信息。在递归方法中,后序遍历与中序遍历与此类似。3.二叉树的前序遍历。原创 2023-04-03 21:16:48 · 56 阅读 · 0 评论 -
day10 栈与队列
思路:用队列统计每个窗口最大值,且每次加入队尾的元素要与队列中已有的元素作比较,小的都排出。这里可以引入一个结构:小顶堆。即一个完全二叉树,小的元素放在顶端。步骤:遍历,用哈希表(map)统计,key存储元素值,value存储次数。再用小顶堆(优先级队列),存储前k个高频元素,再倒序输出。思路:题目要求统计前k个出现频率最高的元素。所以我们要统计数组中元素出现的次数最多的前k个元素。原创 2023-04-03 21:08:10 · 62 阅读 · 0 评论 -
day9 栈与队列
【代码】day9 栈与队列。原创 2023-03-28 22:20:56 · 66 阅读 · 0 评论 -
day8 队列与栈
1.如果正确,则最后栈为空,否则遍历完之后栈不为空(左括号多了)2.如果出栈时括号与当前括号不匹配,则false (顺序错乱)3.还没遍历完,栈就空了,false (右括号多了)每一个括号必定是成对存在。原创 2023-03-28 21:48:38 · 61 阅读 · 0 评论 -
day7 字符串
大致思路是:先把字符串中的多余空格去除掉,其次反转整个字符串,然后再反转单个的单词。按照视频思路,用最笨的方法写了一个通过案例。难点:扩充大小,双指针的变形。原创 2023-03-23 23:12:06 · 67 阅读 · 0 评论 -
代码随想录算法训练营第一天
day1原创 2023-03-15 21:40:04 · 71 阅读 · 1 评论