每日一刷-力扣1582. 二进制矩阵中的特殊位置

知识浅谈 🐄🐄🐄🐄🐄大佬
后端领域优质创作者
博客专家认证
2022-09-04 09:08:12

1582. 二进制矩阵中的特殊位置

给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 。

特殊位置 定义:如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特殊位置。

这一次不在暴力,必须得有点算法思想,用两个数组分别记录每行/每列 对应的 列的位置/行的位置

class Solution {
    public int numSpecial(int[][] mat) {
        int m = mat.length;
        int n = mat[0].length;
        int[] rec = new int[n];
        int[] recRow = new int[m];
        for(int j=0;j<n;j++){
            rec[j]=-1;
            for(int i=0;i<m;i++){
                if(mat[i][j]==1){
                    if(rec[j]>=0){
                        rec[j]=-1;
                        break;
                    }
                    rec[j]=i;
                }
            }
        }
        for(int i=0;i<m;i++){
            recRow[i]=-1;
            for(int j=0;j<n;j++){
                if(mat[i][j]==1){
                    if(recRow[i]>=0){
                        recRow[i]=-1;
                        break;
                    }
                    recRow[i]=j;
                }
            }
        }
        int res=0;
        for(int i=0;i<m;i++){
            if(recRow[i]>=0&&rec[recRow[i]]==i){
                res++;
            }
        }
        return res;
    }
}

 

...全文
15 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
知识浅谈后端社区

3108

社区成员

知识浅谈(带你学后端)社区,旨在为学习后端的小伙伴提供技术内容共享学习平台,助力每位小伙伴写出高质量代码,欢迎各位小伙伴的加入。
java爬虫后端 个人社区 吉林省·长春市
社区管理员
  • 知识浅谈
加入社区
帖子事件
创建了帖子
2022-09-04 09:08
社区公告

【社区倡导与禁止】

  • 社区倡导积极发帖,互相交流技术问题,学习心得。
  • 社区不限制技术领域,后端内容增加加精权重
  • 社区禁止发布低俗、不健康的内容

【社区积分规则】

  • 在社区「发帖」得10积分
  • 内容被管理员「加精」得10积分
  • 点赞他人内容得1积分
  • 评论内容得2积分