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

leetcode3546. 等和矩阵分割 I- medium

1 题目:等和矩阵分割 I

官方标定难度: 中

给你一个由正整数组成的 m x n 矩阵 grid。你的任务是判断是否可以通过 一条水平或一条垂直分割线 将矩阵分割成两部分,使得:

分割后形成的每个部分都是 非空 的。
两个部分中所有元素的和 相等 。
如果存在这样的分割,返回 true;否则,返回 false。

示例 1:

输入: grid = [[1,4],[2,3]]

输出: true

解释:
在这里插入图片描述

在第 0 行和第 1 行之间进行水平分割,得到两个非空部分,每部分的元素之和为 5。因此,答案是 true。

示例 2:

输入: grid = [[1,3],[2,4]]

输出: false

解释:

无论是水平分割还是垂直分割,都无法使两个非空部分的元素之和相等。因此,答案是 false。

提示:

1 < = m = = g r i d . l e n g t h < = 1 0 5 1 <= m == grid.length <= 10^5 1<=m==grid.length<=105
1 < = n = = g r i d [ i ] . l e n g t h < = 1 0 5 1 <= n == grid[i].length <= 10^5 1<=n==grid[i].length<=105
2 < = m ∗ n < = 1 0 5 2 <= m * n <= 10^5 2<=mn<=105
1 < = g r i d [ i ] [ j ] < = 1 0 5 1 <= grid[i][j] <= 10^5 1<=grid[i][j]<=105

2 solution

可以求每一行每一列,以及整个矩阵的和 S, 如果行某一的前缀和或者列的某一前缀和等于 S/2 即可分割。

代码

class Solution {
public:bool canPartitionGrid(vector<vector<int>> &grid) {int m = grid.size(), n = grid[0].size();vector<long long> cols(n + 1), rows(m + 1);long long s = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cols[j + 1] += grid[i][j];rows[i + 1] += grid[i][j];s += grid[i][j];}}if(s & 1) return false;s /= 2;for (int i = 1; i <= m; i++) {rows[i] += rows[i - 1];if(rows[i] == s) return true;if(rows[i] > s) break;}for (int i = 1; i <= n; i++) {cols[i] += cols[i - 1];if(cols[i] == s) return true;if(cols[i] > s) break;}return false;}
};

结果

在这里插入图片描述

http://www.xdnf.cn/news/517087.html

相关文章:

  • uniapp中的easycom工作机制
  • Flask快速入门和问答项目源码
  • ​在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件​
  • 【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析
  • Python 中 if 和 else 基础知识的详解和使用
  • 中级统计师-统计学基础知识-第四章 假设检验
  • 【老马】离线版金融敏感信息加解密组件开源项目 encryption-local
  • python打卡day29
  • spark数据处理练习题详解【下】
  • 【simulink】IEEE33节点系统潮流分析模型
  • 2025年全国青少年信息素养大赛C++小学全年级初赛试题
  • MyBatis框架(入门)
  • 【java多线程】线程间通信-利用wait和notify轮流按序打印奇数和偶数
  • 一文读懂-嵌入式Ubuntu平台
  • 基于Bootstrap 的网页html css 登录页制作成品
  • C++学习:六个月从基础到就业——C++17:if/switch初始化语句
  • MATLAB中的Switch语句讲解
  • LabVIEW双音信号互调失真测量
  • CSS 浮动(Float)及其应用
  • AUTOSAR图解==>AUTOSAR_SRS_TTCAN
  • CPU、核心、进程、线程、协程的定义及关系
  • 基于DeepSeek API构建带记忆的对话系统:技术实现详解
  • 网络的知识的一些概念
  • 代码案例分析
  • 文件IO之标准IO
  • AGI大模型(23):LangChain框架快速入门之LangChain介绍
  • Linux基础指令
  • 目标检测评估指标mAP详解:原理与代码
  • Python文件IO、pip管理及内置模块实战解析
  • 编译原理--期末复习