-
Notifications
You must be signed in to change notification settings - Fork 382
Closed
Description
LeetCode 用户名
wang-lian-zhuan-liao-2kuai-qian
问题号码、标题和链接
Bug Category
缺少测试用例 (由于缺少测试用例而接受不正确/低效的代码)
描述
当m大于等于三时,删四个角落的情况没有考虑也能过
你使用的语言
C++
你提交或者运行的代码
class Solution {
public:
bool check(vector<vector<int>>& grid) {
int n, m;
n = grid.size(), m = grid[0].size();
long long sum = 0, x = 0, y = 0;
map<long long, int> mp1, mp2;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
mp2[grid[i][j]]++, sum += grid[i][j];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
x += grid[i][j], mp1[grid[i][j]]++, mp2[grid[i][j]]--;
if (mp2[grid[i][j]] == 0)
mp2.erase(grid[i][j]);
}
if (sum - x == x)
return true;
if ((i > 0 && m > 1 || m == 2) && (mp1.count(x - (sum - x))))
return true;
if ((i + 2 < n && m > 1 || m == 2) && mp2.count(sum - x - x)) {
return true;
}
if (m == 1 &&
(2 * x - sum == grid[0][0] || 2 * x - sum == grid[i][0] ||
sum - 2 * x == grid[n - 1][0] ||
i + 1 < n && sum - 2 * x == grid[i + 1][0])) {
// cout << 1 << '\n';
return true;
}
}
return false;
}
bool canPartitionGrid(vector<vector<int>>& grid) {
int n, m;
n = grid.size(), m = grid[0].size();
vector<vector<int>> a(m, vector<int>(n));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
a[j][i] = grid[i][j];
// cout << check(grid) << '\n';
return check(grid) || check(a);
}
};期望行为
[[4,4,4],[2,2,1],[1,1,1]]
true
上面那份代码返回false
屏幕截图
额外的上下文
No response
