leetcode 3212. 统计 X 和 Y 频数相等的子矩阵数量 中等
给你一个二维字符矩阵grid其中grid[i][j]可能是X、Y或.返回满足以下条件的子矩阵数量包含grid[0][0]X和Y的频数相等。至少包含一个X。示例 1输入grid [[X,Y,.],[Y,.,.]]输出3解释示例 2输入grid [[X,X],[X,Y]]输出0解释不存在满足X和Y频数相等的子矩阵。示例 3输入grid [[.,.],[.,.]]输出0解释不存在满足至少包含一个X的子矩阵。提示1 grid.length, grid[i].length 1000grid[i][j]可能是X、Y或..分析二维前缀和。用一个数组记录以当前位置为右下角的矩阵中包含的 X 和 Y 的数量当这两个值先等且不为 0 时说明这个子矩阵符合要求。检查所有点统计符合要求的点的数量。typedef struct node { int x,y; }node; int numberOfSubmatrices(char** grid, int gridSize, int* gridColSize) { int ngridSize,mgridColSize[0]; node cnt[n5][m5];cnt[0][0].xcnt[0][0].y0; if(grid[0][0]X)cnt[0][0].x1; else if(grid[0][0]Y)cnt[0][0].y1; for(int i1;in;i) { cnt[i][0]cnt[i-1][0]; // cnt[i][0].xcnt[i-1][0].x,cnt[i][0].ycnt[i-1][0].y; if(grid[i][0]X)cnt[i][0].x1; else if(grid[i][0]Y)cnt[i][0].y1; } for(int j1;jm;j) { cnt[0][j]cnt[0][j-1]; // cnt[0][j].xcnt[0][j].x,cnt[0][j-1].ycnt[0][j-1].y; if(grid[0][j]X)cnt[0][j].x1; else if(grid[0][j]Y)cnt[0][j].y1; } for(int i1;in;i) for(int j1;jm;j) { cnt[i][j].xcnt[i-1][j].xcnt[i][j-1].x-cnt[i-1][j-1].x; cnt[i][j].ycnt[i-1][j].ycnt[i][j-1].y-cnt[i-1][j-1].y; if(grid[i][j]X)cnt[i][j].x1; else if(grid[i][j]Y)cnt[i][j].y1; } int ans0; for(int i0;in;i) for(int j0;jm;j) if(cnt[i][j].xcnt[i][j].xcnt[i][j].y) ans; return ans; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428333.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!