主题切换
LeetCode 每日一题笔记
0. 前言
- 日期:2025.03.25
- 题目:3546.等和矩阵分割
- 难度:中等
- 标签:数组 链表 哈希表
1. 题目理解
问题描述:
给你一个由正整数组成的 m x n 矩阵 grid。你的任务是判断是否可以通过 一条水平或一条垂直分割线 将矩阵分割成两部分,使得:
分割后形成的每个部分都是 非空 的。 两个部分中所有元素的和 相等 。 如果存在这样的分割,返回 true;否则,返回 false。
示例:
输入: grid = [[1,4],[2,3]] 输出: true
2. 解题思路
核心观察
算法步骤
3. 代码实现
java
class Solution {
public boolean canPartitionGrid(int[][] grid) {
int n = grid.length;
int m = grid[0].length;
long total = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
total += grid[i][j];
}
}
if (total % 2 != 0) return false;
long target = total / 2;
long sum = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
sum += grid[i][j];
}
if (sum == target) {
return true;
}
}
long colSum = 0;
for (int j = 0; j < m; j++) {
for (int i = 0; i < n; i++) {
colSum += grid[i][j];
}
if (colSum == target) return true;
}
return false;
}
}