LeetCode
文章平均质量分 63
LeetCode算法题
Dannii_
一名苦逼加班的 做游戏的 后台开发的 程序猿 =_=
展开
-
Trie树 字典树 前缀树
字典树通过共享字符串的公共前缀来达到节省空间的目的。比如 “abc” 和 “ab” 和 “d”,构建的字典树如下表示,红色表示一个串的结束。比如我们做一个26个字母的字典树每个节点下都有26种可能的分支。因此定义每个节点的结构TrieNode如下:#include <iostream>#include <stdlib.h>#include <stdio.h>#include <memory.h>#include <mche原创 2020-08-29 17:04:46 · 304 阅读 · 0 评论 -
36-Leetcode 二叉搜索树与双向链表
文章目录思路法一:递归法二:借助栈题目二叉搜索树与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。要求不能创建任何新的节点,只能调整树中节点指针的指向。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。思路我们知道二叉搜索树的特点就是,左孩子节点的值 < 根节点的值 < 右孩子节点的值所以按照 左根右 的顺序进行遍历,即可实现从原创 2020-07-14 20:02:39 · 255 阅读 · 0 评论 -
33-LeetCode 二叉搜索树的后序遍历序列
文章目录题目题目二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树:5/ \2 6/ \1 3示例 1:输入: [1,6,3,2,5]输出: false思路:后序遍历: 左 &n原创 2020-07-14 15:51:31 · 232 阅读 · 0 评论 -
26-LeetCode
文章目录题目法一:递归题目树的子结构。输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A:3/ \4 5/ \1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。法一:递归先在A树中找到和B树根节点相同的节点找到相同的根节点后,从根节点开始判断A是否包含B树当B为空,说明B已匹配完成,返回true当A为空原创 2020-07-14 14:58:35 · 182 阅读 · 0 评论 -
27-LeetCode 二叉树的镜像
文章目录题目法一:迭代题目二叉树的镜像。请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9原创 2020-07-14 11:15:22 · 277 阅读 · 0 评论 -
106-LeetCode 从中序与后序遍历序列构造二叉树
文章目录题目法一:递归题目从中序与后序遍历序列构造二叉树。根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ \9 20 / \ 15 7法一:递归思路:中序遍历: 左 根 右后序遍历: 左 右 跟根据 后序序列 得到原创 2020-07-10 10:42:48 · 279 阅读 · 1 评论 -
105-LeetCode 根据前序+ 中序序列构造二叉树
文章目录题目法一:递归题目从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ \9 20/ 15 7 法一:递归思路根据前序遍历可以知道根节点,根据根节点可以在中序序列中得到左子树 和 右子树 的中序序列我们可以得到如下信息:先序序列------根节原创 2020-07-09 19:29:03 · 352 阅读 · 0 评论 -
32-LeetCode 从上到下打印二叉树
文章目录题目题目从上到下打印二叉树:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回:[3,9,20,15,7]思路:从上-往下打印二叉树—相当于层序遍历从上往下,从左往右。我们知道都是按顺序的,顺序结构,可以借助队列来帮助实现先把根节点放入队列队列不为空,取出队列中的一个节点,左孩子节点(不为空)入队,右孩子节点(不为空)入队一次重复第原创 2020-07-08 19:41:38 · 296 阅读 · 0 评论 -
145-LeetCode 二叉树的后序遍历
[toc]题目二叉树的后序遍历 给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [3,2,1]代码如下:#include <stdio.h>#include <stdlib.h>#include <iostream>#include <stack>#include <vector>using namespace std;struct TreeNode{原创 2020-07-08 17:50:12 · 220 阅读 · 0 评论 -
94-LeetCode 二叉树的中序遍历
文章目录题目法一:借助栈法二:递归版本法三:莫里斯遍历 ---- 线索二叉树题目二叉树的中序遍历:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [1,3,2]法一:借助栈中序遍历: 左 根 右我们可以借助栈来完成。我们知道左 跟 右,那就是要把左子树全部处理完了,即一直往左下一直走到头,然后在一层一层向上出来 - - - 再去处理根节点 - - - 再去处理右节点具体思路:根节点入栈 - - - 根节点的所有左节点依次原创 2020-07-07 19:49:10 · 216 阅读 · 0 评论 -
144-LeetCode 二叉树的先序遍历
文章目录题目一:借助栈实现借助栈实现---优化版本二:递归实现题目二叉树的前序遍历:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [1,2,3]一:借助栈实现我们知道,先序遍历是按照 根左右 的顺序进行遍历的。即 根 左子树 右子树我们知道栈的特点是后进先出。可以借助栈来实现:先把根节点入栈栈不为空。弹出栈顶元素 A栈顶元素 A 的右节点入栈(若不为空)栈顶元素 A 的左节点入栈(若不为空)重复上述操作直原创 2020-07-06 20:13:12 · 447 阅读 · 0 评论 -
LeetCode- 5 Longest Palindromic Substring
计算最长回文子串:manacher算法题目: Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:Input: "babad"Output: "bab"Note: "aba" is also a valid原创 2017-01-21 11:25:22 · 250 阅读 · 0 评论 -
[LeetCode]Container With Most Water
题目: Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find tw原创 2017-01-24 23:39:28 · 246 阅读 · 0 评论 -
LeetCode-155 最小栈
文章目录题目思路辅助栈和数据栈同步操作辅助栈只存储最小值题目设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:MinStack minStack = new MinStack();...原创 2020-04-07 20:30:52 · 266 阅读 · 0 评论