摘要: 剑指 Offer 39. 数组中出现次数超过一半的数字 题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 思路 方法一:哈希表 通过一个 hashmap 记录每个数的个数,如果大于一半就输出。 方法二:排序 排序,然后最中 阅读全文
posted @ 2022-04-14 16:32 沐灵_hh 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 思路 因为有重复字符,所以不能通过记录哪个使用了哪个没使用来 dfs。而是统计所有不重复的字符,并记录每个字符的个数,然后进行 dfs。 方法二 阅读全文
posted @ 2022-04-14 16:31 沐灵_hh 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 36. 二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 思路 排序列表:二叉搜索树的中序遍历是有序的 双向链表:设置前驱节点 pre 和当前节点 cur,pre.right = cur, 阅读全文
posted @ 2022-04-14 16:30 沐灵_hh 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 37. 序列化二叉树 题目 请实现两个函数,分别用来序列化和反序列化二叉树。 你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。 思路 序列化:将二叉 阅读全文
posted @ 2022-04-14 16:30 沐灵_hh 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 35. 复杂链表的复制 请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 思路 在复制的时候用哈希表保存原链表的节点到新链表节点的对应关系, 阅读全文
posted @ 2022-04-14 16:29 沐灵_hh 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 思路 后序遍历是 左子树 + 右子树 + 根,左子树全小于根,右子树全大于根,dfs判断即可 待填 阅读全文
posted @ 2022-04-14 16:28 沐灵_hh 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 34. 二叉树中和为某一值的路径 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 思路 dfs 代码 class Solution { private List<List<Integer>> ans 阅读全文
posted @ 2022-04-14 16:28 沐灵_hh 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20] 阅读全文
posted @ 2022-04-14 16:27 沐灵_hh 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 32 - III. 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 阅读全文
posted @ 2022-04-14 16:27 沐灵_hh 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 31. 栈的压入、弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2 阅读全文
posted @ 2022-04-14 16:25 沐灵_hh 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 思路 开一个栈用来做 push, pop,再开另外一个辅助栈用来维护 min 值 待填坑:还有不用辅助栈 阅读全文
posted @ 2022-04-14 16:24 沐灵_hh 阅读(19) 评论(0) 推荐(0) 编辑