![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
Zhang Fanghui
这个作者很懒,什么都没留下…
展开
-
剑指offer 给定一个二叉树,判断是否有路径上子节点的值和等于给定sum
给定一个二叉树,找出路径上子节点的值和等于给定sum 举例子: 5》》4》》11》》2,sum = 22 解法如下: 使用深度遍历方法 这里同样是使用递归思想处理这个问题 递归要处理好入参和返回值 每一次返回值都可以作为下一次的入参 这里返回self,func(root.left, sum),会对root和sum进行更新 但是这种解法是遍历了所有节点后返回结果 优化解法后可以使用广度搜索算法 对每一次遍历的节点的左右子节点都进行判断,只要该层出现了符合条件的叶子节点,即可结束递归调用 同样更新入参。原创 2020-12-07 00:57:58 · 197 阅读 · 0 评论 -
剑指offer 二叉树的最小深度
二叉树的最小深度 给定一个二叉树,找出该树的最小深度值,并返回 解法: 深度遍历搜索,即DFS 先OOP定义树节点,init()方法分配地址内存 接着用递归思想,不断调用minDepth()方法,收集所有树节点的高度返回值。 其中map()是python的映射方法,使用方法如下:map(function(), 可迭代对象),map依次遍历可迭代对象里面的元素,作为function()的入参,函数返回值会作为生成器的元素。 这里需要如果root存在,则最小深度自动 +1 广度遍历搜索 BFS 使用队列求解即原创 2020-12-07 00:06:26 · 53 阅读 · 0 评论 -
剑指offer word pattern解法
word pattern 给定字符串,判断是否符合要求的匹配模式 举例: pattern = “abba”, str = “dog cat cat dog” should return true. pattern = “abba”, str = “dog cat cat fish” should return false. pattern = “aaaa”, str = “dog cat cat dog” should return false. pattern = “abba”, str = “dog d原创 2020-12-09 00:18:11 · 90 阅读 · 0 评论 -
剑指offer 找到二叉搜索树里面出现最频繁的数
找到二叉搜索树里面出现最频繁的数 出现最频繁的数就是遍历所有节点之后其中出现次数最多的 这题我没有什么思路,考虑递归但是写不出 来。参考 https://blog.csdn.net/c406495762/article/details/75497795 分析思路:使用迭代 不是很懂这里说不能使用哈希表的意思,但是这里明确利用了二叉搜索树的特性,即永远是左子树《《根节点《《右子树,所以如果我们按照中序遍历的方式去遍历,同一个值会同时出现。 我们先找到二叉搜索树的中序遍历的起点,然后把root到中序遍历的起点上原创 2020-12-12 05:57:11 · 271 阅读 · 2 评论 -
剑指offer Path Sum II
Path Sum II 给定一个二叉树,求出它路径和符合给出的sum值 思路:这题可以借鉴判断前面的一题是不是存在符合sum的路径 先写一个递归判断是否存在sum的路径的函数,然后调用它,把结果存储在List[List[str]] 这里通过Istrue方法先找到符合要求的路径,存储在res列表里 然后上面的PathSum再调用即可 ...原创 2020-12-12 21:36:23 · 44 阅读 · 0 评论 -
剑指offer 二叉树转化为字符串结构表示 Construct String from Binary Tree
Construct String from Binary Tree 给定一个二叉树,把它转化为字符串结构, 如果左边有子树,则表示为(root.val),该括号不可省略,否则破坏树结构 但是当右子树不存在时,可以省略其() 举例子: 1 2 3 4 return 1(2(4))(3) 分类讨论: 1、当存在左子树或者右子树存在,则左边的形式为"(root.left.val)",否则"" 2、当右子树存在时,则才会有"(root.right.val)",否则"" 3、如果左右子树都不存在,则原创 2020-12-15 00:16:43 · 187 阅读 · 0 评论 -
剑指offer 最低公共祖先节点
找出给定二叉搜索的树中的任意两个节点的最低公共祖节点 给定两个节点p,q,最低公共祖节点的概念就是p的祖节点和q的祖节点由下向上第一次是同一个节点。 由于是二叉搜索树,那么左边节点的值《《根节点值《《右子节点值 利用这一特性可以使用递归和迭代两种方法 递归解法: 处理好入参即可 迭代解法: 处理好迭代循环控制器即可,这里就是root ...原创 2020-12-17 07:18:57 · 128 阅读 · 0 评论 -
剑指offer 反转字符串三
#反转字符串 三 ##举例子:“Now Coding”, return “woN gnidoC” 三种方法:一种使用遍历s.split() 一种使用列表推导式,对于列表s.split()进行推演,列表转字符 还有一种先把列表反转转化为字符,再反转字符 列表转字符使用’’’.join(list[]) 本篇是刷题理解思考,原答案地址: https://github.com/Jack-Cherish/LeetCode/blob/master/String/Easy/557.Reverse%20Words%20i转载 2020-12-05 21:19:41 · 104 阅读 · 0 评论 -
剑指offer 字符串处理之返回给定字符串中的最长的回文字符串
找出给定字符串中的最长回文字符串 ##举例子: “ababd”, 返回 “abab” “BBBBBB”, 返回"B" 解法是从上一题学的,自动迁移,使用temp来存储遍历过的字符,然后遍历给定字符串,遇见遍历过的字符,那么自动开始进行回文判断,判断合格存储在哈希表里,然后在哈希表里找到最长字符串 注意求哈希表里的最长字符串,可以使用dict.keys()和dict.values()转化为列表处理,然后利用index()方法建立联系 ...原创 2020-12-05 13:06:27 · 120 阅读 · 0 评论 -
剑指offer一刷 字符串之找出最长的无重复字符串并返回长度
欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增加了 图片转载 2020-12-05 11:03:13 · 76 阅读 · 0 评论