offer

剑指 Offer 38. 字符串的排列(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230815211654949-430689338.png) ``` class Solution { public: vector result; string pa ......
字符串 字符 Offer 38

【剑指Offer】26、二叉搜索树与双向链表

**题目描述:** 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 **解题思路:** 首先要理解此题目的含义,在双向链表中,每个结点都有前后两个指针;二叉树中,每个结点都有两个指向子结点的左右指针,同时,二叉搜索树树也是一种排序的 ......
双向 Offer

【剑指Offer】 24、二叉树中和为某一值的路径

# 【剑指Offer】 24、二叉树中和为某一值的路径 **题目描述:** 输入一颗二叉树的根结点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) **解题思路:** ......
路径 Offer

【剑指Offer】23、二叉搜索树的后序遍历序列

# 【剑指Offer】23、二叉搜索树的后序遍历序列 **题目描述:** 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 **解题思路:** 对于后续遍历序列,序列的最后一个值一定是树的根结点,而由二叉搜索树 ......
序列 Offer

剑指 Offer 36. 二叉搜索树与双向链表(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230814211438636-1150888080.png) ``` class Solution { public: Node* head=nullptr; Nod ......
双向 Offer 36

剑指 Offer 34. 二叉树中和为某一值的路径(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230814204415188-607618190.png) ``` class Solution { public: vector> result; vector p ......
路径 Offer 34

剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","dele ......
队列 两个 Offer 09

【剑指Offer】18、二叉树的镜像

# 【剑指Offer】18、二叉树的镜像 **题目描述:** 操作给定的二叉树,将其变换为原二叉树的镜像。 **解题思路:** 求一棵树的镜像的过程:先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有的非叶结点的左、右子结点后,就可以得到该树的镜像。 如下面的例 ......
镜像 Offer

【剑指Offer】22、从上往下打印二叉树

# 【剑指Offer】22、从上往下打印二叉树 **题目描述:** 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 **解题思路:** 本题实际上就是二叉树的层次遍历,深度遍历可以用递归或者栈,而层次遍历很明显应该使用队列。同样我们可以通过一个例子来分析得到规律:每次打印一个结点时,如果该结 ......
Offer

【剑指Offer】17、树的子结构

# 【剑指Offer】17、树的子结构 **题目描述:** 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) **解题思路:** 要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步,在树A中找到和树B的根结点值一样的结点R;第二步,判断树A中 ......
子结构 Offer

剑指 Offer 12. 矩阵中的路径

力扣官方解法: class Solution { public: bool exist(vector<vector<char>>& board, string word) { int h = board.size(), w = board[0].size(); vector<vector<int>> ......
矩阵 路径 Offer 12

剑指 Offer 54. 二叉搜索树的第k大节点(简单)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230813130240044-1768447763.png) ``` class Solution { public: void traversal(TreeNode ......
节点 Offer 54

一个mysql dba的成长之旅--第零章 绝处逢生:意外收到dba offer

(本故事纯属虚构,如有雷同实属巧合) 2018年的一个秋天的下午,江南理工大学图书馆一楼的宣讲会大厅人头攒动,充满了期待的氛围。这里正在举办一场国内知名互联网公司的宣讲会,吸引了众多毕业生前来倾听。小李身穿一套整洁的求职西装,手里拿着整齐的彩色简历,坐在室友旁边,全神贯注地聆听着台上大咖们的分享。 ......
绝处逢生 dba 之旅 mysql offer

《剑指Offer》-58-翻转单词顺序/力扣-151-反转字符串中的单词

可以使用栈,将每个单词(字符串)压栈,然后弹栈就 OK 了 好吧,实际写下来考虑到可能存在的多余空格问题,代码看起来并不简介,而且写之前就很明显直到需要最差额外 n 的空间,时间复杂度最差 2n,所以都不算好 思路是压栈的时候只压单词本身,弹栈的时候再去拼空格 ```c++ string rever ......
单词 字符串 顺序 字符 Offer

【剑指Offer】55、链表中环的入口结点

# 【剑指Offer】55、链表中环的入口结点 **题目描述:** 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 **解题思路:** 本题是一个比较典型的链表题目,难度适中。首先,对于大多人来说,看到这道题是比较开心的,因为判断一个链表是否存在环的方法,基本上大家都知道 ......
结点 入口 Offer

【剑指Offer】4、重建二叉树

# 【剑指Offer】4、重建二叉树 **题目描述:** 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回根结点。 ......
Offer

【剑指Offer】56、删除链表中重复的结点

# 【剑指Offer】56、删除链表中重复的结点 **题目描述:** 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。 **解题思路:** 关于链表的大多数题目还是比较简单的 ......
结点 Offer

剑指 Offer 64. 求1+2+…+n(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230812232217818-587944382.png) ``` class Solution { public: int sumNums(int n) { //首 ......
Offer 64

【剑指Offer】36、两个链表的第一个公共结点

# 【剑指Offer】36、两个链表的第一个公共结点 **题目描述:** 输入两个链表,找出它们的第一个公共结点。 **解题思路:** 本题首先可以很直观的想到蛮力法,即对链表1(假设长度为m)的每一个结点,遍历链表2(假设长度为n),找有没有与其相同的结点,这显然复杂度为O(mn)。 进一步考虑, ......
结点 两个 Offer

【剑指Offer】25、复杂链表的复制

# 【剑指Offer】25、复杂链表的复制 **题目描述:** 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 **解题思路:** ......
Offer

【剑指Offer】16、合并两个排序的链表

# 【剑指Offer】16、合并两个排序的链表 **题目描述:** 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 **解题思路:** 首先需要判断几个特殊情况,即判断输入的两个指针是否为空。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空, ......
两个 Offer

剑指 Offer 13. 机器人的运动范围(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230811205715141-1668789012.png) ``` class Solution { //本题的思路为递归法 public: int cal(int ......
机器人 范围 机器 Offer 13

《剑指Offer》-57-和为 s 的两个数字

双指针 ```c++ vector twoSum(vector& nums, int target) { // 题目中说了这是一个递增数组,而且我需要两个数字组成s vector res; int smallDigit = 0, bigDigit = nums.size() - 1; // 这要结果 ......
两个 数字 Offer 57

《剑指Offer》-48-最长不含重复字符串的子字符串

这题以前做过,和 力扣-3 重复 ```c++ int lengthOfLongestSubstring(string s) { // 本来应该是用map,但是其实可以使用数组替代,下标对应了字母 unordered_map map; int len = s.size(),maxLen=0;// 初 ......
字符串 字符 Offer 48

剑指 Offer 12. 矩阵中的路径(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230810210325394-125626604.png) ``` class Solution { public: int row, col; bool trave ......
矩阵 路径 Offer 12

《剑指Offer》-46-把数字翻译成字符串

### 读题 数字 0 ~ 25 分别对应了 a ~ z 一共 26 个字母 现在给一个数字,比如 12258,问可能对应多少种不同的翻译? 比如:1,2,2,5,8 12,2,5,8 12,25,8 1,22,5,8 1,2,25,8 一共 5 种 ### 思路 使用动态规划的三要素: 1. 数组 ......
字符串 字符 数字 Offer 46

剑指 Offer 26. 树的子结构(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230809205231164-1142530908.png) ``` class Solution { public: //本方法运用两层递归,非常巧妙 bool t ......
子结构 Offer 26

《剑指Offer》-61-扑克牌中的顺子

判断是否为连续的数字,需要额外考虑的情况有一个,就是 0 可以代表任何数字,并且最多出现两次 给出的长度为 5 的数组不一定是顺序 ```C++ bool isStraight(vector& nums) { sort(nums.begin(), nums.end()); // 没有 0 的情况 i ......
扑克牌 扑克 Offer 61

剑指 Offer 28. 对称的二叉树(简单)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230808213146832-2111953032.png) ``` class Solution { public: bool traversal(TreeNode ......
Offer 28

剑指 Offer 32 - III. 从上到下打印二叉树 III(中等)

题目: ![](https://img2023.cnblogs.com/blog/2679751/202308/2679751-20230807212857726-1306303710.png) ``` class Solution { public: void traversal(TreeNode ......
III Offer 32