随笔分类 - 剑指offer
算法学习
摘要:题目链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ 双指针 class Solution { public: vector<int> exch
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/ 思路 只关心最终活着的那个人的序号变化,从编号(索引值)的角度考虑; 从8个人开始,每次杀一个人,去掉被杀的人,然后把杀掉的
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/ 双指针 [l,r]的区间和:s = (l + r) * (r - l + 1) / 2 通过利用l和r两个指针,初始l=1,r=2; 如果s
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/he-wei-sde-liang-ge-shu-zi-lcof/ 双指针(对撞指针) 时间复杂度:O(n) 空间复杂度:O(1) 用i和j分别指向数组头和尾,sum = nums[i] + nums[j] 如果sum > t
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/ 递归 前序遍历序列化成字符串,在反序列化回去 注意:不要忘记null和数字后面空格,空格作为分隔两个节点的标识 时间复杂度:O(n) 空间复杂度:O(n) /** *
阅读全文
摘要:题目链接:https://leetcode cn.com/problems/er cha shu zhong he wei mou yi zhi de lu jing lcof/ 递归+回溯 遍历一遍树的节点,沿节点依次向下递增,回溯的时候,记得恢复现场
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/ 找两个节点的最低公共祖先,递归去找 1. 第一种情况,左右子树都有p和q,当前节点为他们的公共祖先 2. 第二种情况,左子树有或者右
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/ 利用二叉搜索树的性质,左子树都比根节点小,右子树都比根节点大;从根节点开始进行比较, 两个节点比根节点的值都大 最低
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/ DFS(递归法) /** * Definition for a binary tree node. * struct TreeNode { * int val; * T
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/ 递归 中序遍历的二叉搜索树序列为单调递增的序列,将中序遍历的结果放到vector中,第k大的数为v.size()-k位置的数 /** *
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/fan-zhuan-dan-ci-shun-xu-lcof/ 剑指offer 时间复杂度:O(n) 空间复杂度:O(1) class Solution { public: string reverseWords(string
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/ BFS 使用双端队列,始终维持一头进一头出的状态,不然就乱了; 用res的大小来标志奇偶行; 偶数行,从左到右,前取后放 奇数行,
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/ 队列(BFS) 与I类似,要按层打印,所以每次先获取队列的长度,这个长度即为该层元素的个数,然后将其保存到数组中,依次将其左右节点压
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/ 迭代法(BFS) 使用队列,先将根入队,当队列不空时进行如下操作: 获取队首元素,队首元素出栈 将其插入res数组中 如果左孩子或右孩子不
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/ 递归 判断A的右子树和B的左子树是否对称 判断A的左子树和B的右子树是否对称 递归终止条件 1. 都为空指针,返回true 2. 只有一个为空,返回false 3.
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/ 递归 递归的先序遍历二叉树,交换每个节点的左右子节点,即可生成二叉树的镜像 /** * Definition for a binary tree node. *
阅读全文
摘要:题目链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/ 递归 从根节点开始递归判断A和B的节点是不是相等; 1) 如果A或B为空,则返回false 2) 否则,使用isSame依次判断A和B中节点是否相等 3)不相等,递归判断A的左
阅读全文
摘要:题目链接:https://leetcode cn.com/problems/zhong jian er cha shu lcof/submissions/ 哈希+ 递归 使用哈希表map记录中序遍历每个元素的位置 利用性质: 1. 先序遍历的第一个节点是根节点 2. 中序遍历的根节点的左边是左子树,
阅读全文
摘要:题目链接:https://leetcode cn.com/problems/shan chu lian biao de jie dian lcof/ 双指针 创建一个值为0的头结点,然后利用两个指针同时向前移动,判断第二个指针节点的值是否等于val;
阅读全文
摘要:题目链接:https://leetcode cn.com/problems/cong wei dao tou da yin lian biao lcof/ 改变链表 先逆置链表,然后将结果保存到数组中 reverse 依次将链表保存到数组中,然后逆置数组 栈 依次遍历链表并入栈,然后栈中元素依次弹到
阅读全文