当前位置: 首页 > news >正文

【今日三题】判断是不是平衡二叉树(递归) / 最大子矩阵(二维前缀和) / 小葱的01串(滑动窗口)

头像
⭐️个人主页:@小羊
⭐️所属专栏:每日两三题
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

    • 判断是不是平衡二叉树(递归)
    • 最大子矩阵(二维前缀和)
    • 小葱的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;
}

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

头像

相关文章:

  • 【技术派后端篇】 Redis 实现用户活跃度排行榜
  • 数据库备份-docker配置主从数据库
  • IntelliJ IDEA右键快捷方式设置方法
  • Sentinel源码—5.FlowSlot借鉴Guava的限流算法二
  • uniApp小程序保存定制二维码到本地(V3)
  • YOLOv11改进有效涨点专栏:从理论到实战的深度优化指南
  • docker转移镜像
  • 那就聊一聊mysql的锁
  • 【基于Fluent+Python耦合的热管理数字孪生系统开发:新能源产品开发的硬核技术实践】
  • CMFA在自动驾驶中的应用案例
  • 国产的 Java Solon v3.2.0 发布(央企信创的优选)
  • Go-zero框架修改模版进行handler统一响应封装
  • Python基于知识图谱的医疗问答系统【附源码、文档说明】
  • A股周度复盘与下周策略 的deepseek提示词模板
  • VsCode搭建
  • ueditorplus编辑器已增加AI智能
  • Java Date 类深度解析
  • ISO26262-浅谈用例导出方法和测试方法
  • x-ui重新申请ssl证书失败
  • c++冒泡排序实现
  • 五一假期上海地铁部分线路将延时运营,这些调整请查收
  • 安徽省公安厅原副厅长刘海石主动投案,正接受审查调查
  • 美国通过《删除法案》:打击未经同意发布他人私密图像,包括“深度伪造”
  • 央行召开落实金融“五篇大文章”总体统计制度动员部署会议
  • 王毅:为改革完善全球治理作出金砖贡献
  • 泽连斯基承认乌情报部门刺杀俄军高官