数据结构-全部由1组成的子矩形数量

news/2024/9/13 22:29:26/ 标签: 数据结构

给定一个二维数组matrix, 其中的值不是0就是1, 返回全部由1组成的子矩形数量。

import java.util.Stack;public class CountSubmatricesWithAllOnes {public static void main(String[] args) {int[][] mat = {{1,1,1,1,1,1},{1,1,1,1,1,1},{1,1,1,1,1,1}};System.out.println(numSubmat(mat));}public static int numSubmat(int[][] mat){if(mat == null || mat.length == 0 || mat[0].length == 0){return 0;}int nums = 0;int[] height = new int[mat[0].length];for (int i = 0; i < mat.length; i++) {for (int j = 0; j < mat[0].length; j++) {height[j] = mat[i][j] == 0 ? 0 : (height[j] + 1);}nums += countFromBottom(height);}return nums;}public static int countFromBottom(int[] height){if(height == null || height.length == 0){return 0;}int nums = 0;Stack<Integer> stack = new Stack<Integer>();for (int i = 0; i < height.length; i++) {if(!stack.isEmpty() && height[stack.peek()] >= height[i]){if(height[stack.peek()] == height[i]){stack.pop(); // 如果相等,就弹出栈,不计算当天弹出的索引stack.push(i);continue;}int popIndex = stack.pop();int h = height[popIndex];int leftIndex = stack.isEmpty() ? -1 : stack.peek();int lenght = i - leftIndex - 1; // 长度int leftHight = leftIndex == - 1 ? 0 : height[leftIndex];int rightHight = height[i];nums = nums + ( lenght * (lenght + 1) / 2 *  (h - Math.max(leftHight,rightHight)) );}stack.push(i);}while(!stack.isEmpty()){int popIndex = stack.pop();int h = height[popIndex];int leftIndex = stack.isEmpty() ? -1 : stack.peek();int lenght = height.length - leftIndex - 1; // 长度int leftHight = leftIndex == - 1 ? 0 : height[leftIndex];int rightHight = 0;nums = nums + ( lenght * (lenght + 1) / 2 *  (h - Math.max(leftHight,rightHight)) );}return nums;}
}

http://www.ppmy.cn/news/1516258.html

相关文章

腾讯云是什么?为什么选择它?

腾讯云是什么&#xff1f; 腾讯云&#xff08;Tencent Cloud&#xff09;是全球领先的云计算服务提供商&#xff0c;凭借其强大的技术实力和丰富的行业经验&#xff0c;腾讯云为全球超过100万用户提供稳定、可靠、高效的云计算服务。无论是初创企业&#xff0c;还是大型企业&a…

22. K8S及DevOps

22. K8S及DevOps 一. 章节简介二. DevOps1. 简介2. CICD三. Kubernetes[1. 官网](https://kubernetes.io/zh-cn/)--------------------------------------------------------------------------------------------------------一. 章节简介 二. DevOps 1. 简介 2. CICD

element表格导出

element表格导出 使用了xlsx插件做表格下载 1、首先安装xlsx插件 import XLSX from ‘xlsx’ 2、在el-table上添加ref 3、导出方法 downloadFun() {const tableElement this.$refs.table.$elconst ws XLSX.utils.table_to_sheet(tableElement)// 创建工作簿并添加工作表…

Mybatis--其他查询操作和数据库连接池(下下)

序 准备工作&#xff1a; mysql数据库和表的信息更新&#xff1a; DROP TABLE IF EXISTS articleinfo;CREATE TABLE articleinfo (id INT PRIMARY KEY auto_increment,title VARCHAR ( 100 ) NOT NULL,content TEXT NOT NULL,uid INT NOT NULL,delete_flag TINYINT ( 4 ) DEF…

E. Linear Kingdom Races

https://codeforces.com/problemset/problem/115/E 线段树优化dp O(n2)->O(nlogn) 分析题意发现可以有暴力dp dp(i)是前i条路最大利润 dp(i)dp(i-1)不选第i条路 dp(i)max(dp(j)val(j)-cost(j))选这i条路 dp(i)max(dp(i-1),max(dp(j)val(j)-cost(j)) 显然右边值可以用…

每天一个数据分析题(四百九十六)- 决策树模型

回归树是可以用于回归的决策树模型&#xff0c;一个回归树对应着输入空间&#xff08;即特征空间&#xff09;的一个划分以及在划分单元上的输出值。以下哪个指标可用于回归树中的模型比较 A. Adjusted R2 B. F-measure C. AUC D. Precision & Recall 数据分析认证考试…

在rk设备上挂载windows上某个文件夹,通过SSH实时将打包的文件保存至windows上

一、简介 要实现将实时打包的镜像文件直接保存到Windows上,而不是先在RK3588设备上创建镜像然后再传输,你可以通过网络挂载Windows上的共享文件夹到RK3588设备上。这样你可以将镜像直接写入到Windows设备的存储中,而不占用RK3588设备的内存空间。 二、步骤1:在Windows上设…

【HTML】模拟二级菜单【附源代码】

模拟二级菜单 HTML部分&#xff1a; <!DOCTYPE html>: 声明文档类型为HTML5。<html>: HTML文档的根元素。<head>: 包含文档的元数据&#xff0c;如字符集、标题和样式。 <meta charset"utf-8">: 设置文档的字符编码为UTF-8。<title>:…

游戏出海新风向:Mintegral详解混合休闲游戏增长策略与ROI优化

根据汇量科技Mobvista此前发布的《2024H1 海外手游市场白皮书——全球获客及变现指南》进一步揭示&#xff0c;以益智及生活模拟品类为代表&#xff0c;混合休闲赛道在买量侧的增长势头十分强劲&#xff1a; 益智游戏&#xff1a;在买量手游市场中占据主导地位&#xff0c;占比…

etcd参数解释

etcd 版本 [rootaaaaaa ~]# /data/etcd/etcd-v3.5.15-linux-amd64/etcd --version etcd Version: 3.5.15 Git SHA: 9a5533382 Go Version: go1.21.12 Go OS/Arch: linux/amd64基础命令: etcd [flags]&#xff1a;启动一个 etcd 服务器。etcd --version&#xff1a;显示 etcd…

【赵渝强老师】Docker三剑客

在Docker容器中提供了三个非常有用的工具&#xff0c;它们分别是&#xff1a;Docker Compose、Docker Machine和Docker Swarm。下面分别进行介绍。 视频讲解如下&#xff1a; Docker三剑客 【赵渝强老师】Docker的三剑客 一、容器编排工具Docker Compose 在使用Docker部署应用…

算法的学习笔记---按之字形顺序打印二叉树

&#x1f600;前言 在算法的学习中&#xff0c;二叉树是一种非常基础但又十分重要的数据结构。今天&#xff0c;我们将讨论一种特殊的二叉树遍历方法&#xff1a;之字形顺序打印。这个方法要求我们以“之”字形的顺序遍历并打印二叉树的节点值&#xff0c;也就是第一行从左到右…

[论文阅读] mobile aloha实验部分

DP:[1] CHI C, FENG S, DU Y, et al. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion[J]. 2023. Diffusion Policy: Visuomotor Policy Learning via Action Diffusion精读笔记&#xff08;一&#xff09;-CSDN博客 哥伦比亚大学突破性的方法- Diffusio…

【算法进阶2-动态规划】最长公共子序列、欧几里得算法-分数、RSA算法-密码于加密

1 最长公共子序列 2 欧几里得算法 2.1 欧几里得算法-分数 3 RSA算法-密码于加密 1 最长公共子序列 -个序列的子序列是在该序列中删去若干元素后得 到的序列。 例:“ABCD”和“BDF”都是“ABCDEFG”的子序列最长公共子序列(LCS)问题:给定两个序列X和Y&#xff0c;求X和Y长度最大…

关于AR在医疗领域创新应用

AR技术在医疗领域创新应用&#xff0c;旨在展示AR技术如何为医疗行业带来革命性的变化&#xff0c;我们可以从以下几个方面入手&#xff1a; 一、引言 随着科技的飞速发展&#xff0c;增强现实&#xff08;AR&#xff09;技术正逐步渗透到医疗领域的各个环节&#xff0c;为患…

如何评估Redis的性能

如果系统中出现了大 key、热 key 等&#xff0c;往往会导致 Redis 变慢&#xff0c;但是这个慢该如何界定&#xff1f;多久算慢&#xff1f;1秒还是3秒&#xff1f; 这个肯定是没有标准答案&#xff0c;因为这个和你的硬件设备有关。 硬件差一些&#xff0c;平时响应时间都是…

ClickHouse与Elasticsearch:大数据时代的两大引擎比较

目录 1. 基本介绍 ClickHouse Elasticsearch 2. 优劣势分析 ClickHouse的优势 ClickHouse的劣势 Elasticsearch的优势 Elasticsearch的劣势 3. 应用案例 4. 总结与选择建议 随着大数据技术的不断发展&#xff0c;企业对数据分析和实时搜索的需求也日益增长。ClickH…

Qt简介----信号与槽与信号(Signals)

以下是为上述博客生成的目录&#xff1a; 目录 什么是Qt&#xff1f;为什么选择Qt&#xff1f; 2.1 跨平台支持2.2 丰富的模块2.3 强大的社区支持2.4 信号与槽机制 深入理解Qt的信号与槽机制 3.1 信号与槽简介3.2 为什么使用信号与槽&#xff1f;3.3 使用信号与槽的基本步骤 …

CSS新增的单位ch

在CSS中&#xff0c;ch 是一个相对单位&#xff0c;它代表数字0&#xff08;零&#xff09;的宽度&#xff0c;在当前的字体和字体大小下的度量。这个单位特别适用于需要基于字符宽度进行布局的场景&#xff0c;比如保持文本的垂直对齐或者在元素内部确保一定的空间以容纳文本字…

【UE5】库存系统——01

目录 步骤 一、项目准备 二、制作数据表 三、与场景物体交互 五、制作可交互的物品 步骤 一、项目准备 1. 新建一个项目&#xff0c;使用第一人称游戏模板&#xff0c;勾选初学者内容包 2. 新建一个蓝图类&#xff0c;父类选择“Actor组件” 这里命名为“Component_Inve…