剑指offer67题-No66.机器人的运动范围
和NO65差不多,dfs即可。 #include <vector> using namespace std; class Solution { public: int dx[4] = {1,0,-1,0}; int dy[4] = {0,1,0,-1}; int row; int col; int count; int t; int movi…
2025-6-19 14:57
|
|
2025-6-19 14:57
剑指offer67题-No65.矩阵中的路径
感觉类似BFS,可以参考acwing出现的题目:AcWing 844. 走迷宫 - AcWing 贴上上面这道题的BFS暴力模板: #include <iostream> #include <string> #include <queue> using namespace std; const int N = 105; int g…
2025-6-19 14:56
|
|
2025-6-19 14:56
剑指offer67题-No64.滑动窗口的最大值
超级重点题,感觉很经常考。 法1:优先队列用一个存储值和数组索引的pair放在优先队列里,当索引超出窗口范围,就把优先队列里的值删掉。 class Solution { public: vector<int> maxSlidingWindow(vector<int>& nums, int k) { priority_queue&…
2025-6-19 14:54
|
|
2025-6-19 14:54
剑指offer67题-No63.数据流中的中位数
法1:暴力用vector arr来存取。如果对vector排好序,则很容易求出中位数 class Solution { public: #define SCD static_cast<double> vector<int> v; void Insert(int num) { v.push_back(num); } double GetM…
2025-6-19 14:53
|
|
2025-6-19 14:53
剑指offer67题-No61.序列化二叉树
序列化二叉树即找一种顺序存储二叉树的节点,并以相同的方式能够读取序列重新构建。 换种说法,就是遍历二叉树,记录每个节点,再以同样的方式遍历就可以还原二叉树。 PS:能基于序列化字符串单独还原树的情况: 层次遍历序列(需标记空节点)。 前序或后序遍历序列(需结合中序,或显式标记空节点,如 [1,2,null,null,3])。若序列化时未标记空节点,…
2025-6-16 16:07
|
|
2025-6-16 16:08
剑指offer67题-No59.按之字形顺序打印二叉树
二叉树的层序遍历,特判版。特判还是比较难的,主要是需要用到tmp.insert(tmp.begin(), x->val);实现从右到左打印 class Solution {public:vector > Print(TreeNode* pRoot) { if (pRoot == nullptr) return {}; vector<ve…
2025-6-16 16:05
|
|
2025-6-16 16:05
剑指offer67题-No58.对称的二叉树
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称) bool dfs(TreeNode* p1, TreeNode* p2){ // 都为nullptr 必对称 if(p1 == nullptr && p2 == nullptr) return true; // 不对称 if(p1 == nullptr || p2 == nul…
2025-6-16 16:04
|
|
2025-6-16 16:04
剑指offer67题-No57.二叉树的下一个节点
简单的思路就是递归中序遍历一遍,存在vector里,然后输出。 通常情况下,中序遍历不可能有O1空间复杂度方法,非递归算法也要用栈来辅助。 三种遍历树的非递归算法总结,可以参考blog:二叉树遍历-非递归算法 - 翁德彪 - 博客园 此处贴一个借助栈的中序遍历非递归算法: void InorderTraverse(BiTree T,Stack *s…
2025-6-06 16:53
|
|
2025-6-06 16:53