您的位置:首页 > 娱乐 > 明星 > 一级消防工程师考试试题及答案_面试问你如何快速优化网站_站长之家 站长工具_seo网站推广软件 快排

一级消防工程师考试试题及答案_面试问你如何快速优化网站_站长之家 站长工具_seo网站推广软件 快排

2025/5/4 9:54:36 来源:https://blog.csdn.net/2301_78843337/article/details/147354192  浏览:    关键词:一级消防工程师考试试题及答案_面试问你如何快速优化网站_站长之家 站长工具_seo网站推广软件 快排
一级消防工程师考试试题及答案_面试问你如何快速优化网站_站长之家 站长工具_seo网站推广软件 快排
头像
⭐️个人主页:@小羊
⭐️所属专栏:每日两三题
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

    • 判断是不是平衡二叉树(递归)
    • 最大子矩阵(二维前缀和)
    • 小葱的01串(滑动窗口)


判断是不是平衡二叉树(递归)

  • 判断是不是平衡二叉树

在这里插入图片描述
在这里插入图片描述

  • 判断一个二叉树是不是平衡二叉树,我们需要知道其左子树和右子树是不是平衡二叉树,并且左右子树的高度差不超过1。
  • 但是返回值只有一个,因此我们规定如果当前子树不是平衡二叉树,返回-1;如果是平衡二叉树则返回其高度。
  • 整个过程是后序遍历。
class Solution {
public:bool IsBalanced_Solution(TreeNode* pRoot) {return dfs(pRoot) != -1;}int dfs(TreeNode* root){if (root == nullptr) return 0;int left = dfs(root->left);if (left == -1) return -1; // 剪枝int right = dfs(root->right);if (right == -1) return -1;return abs(right - left) <= 1 ? max(left, right) + 1 : -1;}
};

最大子矩阵(二维前缀和)

  • 最大子矩阵

在这里插入图片描述

二维前缀和模板题。

#include <iostream>
using namespace std;int pre[101][101];
int n, res = -0x3f3f3f3f;int main()
{cin >> n;for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){int x;cin >> x;pre[i][j] = pre[i - 1][j] + pre[i][j - 1] - pre[i - 1][j - 1] + x;}}for (int i = 1; i <= n; i++){for (int j = 1; j <= n; j++){for (int k = i; k <= n; k++){for (int l = j; l <= n; l++){res = max(res, pre[k][l] - pre[i - 1][l] - pre[k][j - 1] + pre[i - 1][j - 1]);}}}}cout << res << endl;return 0;
}

小葱的01串(滑动窗口)

  • 小葱的01串

在这里插入图片描述

  • 也就是在字符串上维护一段长度为n/2的窗口,当窗口内的0和1的个数和外面0和1的个数相等时更新结果;
  • 字符串成环,当从字符串中找到一段区间满足要求时,实际上找到了两个结果;
  • 需要注意的是:当枚举到字符串边界时,其实另一边已经算过了,因此我们只能枚举一个边界。

在这里插入图片描述

#include <iostream>
#include <string>
using namespace std;int n, res;
string s;int main()
{cin >> n >> s;int x = 0, y = 0;for (auto ch : s){if (ch == '0') x++;else y++;}if (x % 2) res = 0;else{x /= 2, y /= 2;for (int l = 0, r = 0; r < n - 1; r++){if (s[r] == '0') x--;else y--;while (r - l + 1 > n / 2){if (s[l++] == '0') x++;else y++;}if (r - l + 1 == n / 2){if (x == 0 && y == 0){res++;}}}}cout << res * 2 << endl;return 0;
}

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com