刷题第七天

1、统计矩阵中负数

int countNegatives(vector<vector<int>>& grid) {
        int cnt=0;
        for(auto x:grid){
            for(auto y:x){
                if(y<0){
                    cnt++;
                }
            }
        }
        return cnt;
    }

2、矩阵对角线元素和

int diagonalSum(vector<vector<int>>& mat) {
        int ans=0;
        int r=mat.size();
        for(int i=0;i<r;i++){
            ans+=mat[i][i];
        }
        for(int i=0;i<r;i++){
            if(r-i-1!=i){
                ans+=mat[i][r-i-1];
            }
        }
        return ans;
    }

3、最富有的客户

int maximumWealth(vector<vector<int>>& accounts) {
        int maxval=0;
        for(int i=0;i<accounts.size();i++){
           int sum=0; 
            for(int j=0;j<accounts[0].size();j++){
                sum+=accounts[i][j];
                maxval=max(sum,maxval);
            }
        }
        return maxval;
    }

4、托普利茨矩阵

bool isToeplitzMatrix(vector<vector<int>>& matrix) {
        for(int i=1;i<matrix.size();i++){
            for(int j=1;j<matrix[0].size();j++){
                if(matrix[i][j]!=matrix[i-1][j-1]){
                    return false;
                }
            }
        }
        return true;
    }

5、矩阵中的幸运数

    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        int r=matrix.size();
        int c=matrix[0].size();
        int rmin[100];
        int cmax[100];
        vector<int> ret;
        for(int i=0;i<r;i++){
            rmin[i]=100000;
            for(int j=0;j<c;j++){
                rmin[i]=min(rmin[i],matrix[i][j]);
            }
        }
        for(int j=0;j<c;j++){
            cmax[j]=0;
            for(int i=0;i<r;i++){
                cmax[j]=max(cmax[j],matrix[i][j]);
            }
        }
        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
                if(matrix[i][j]==rmin[i]&&matrix[i][j]==cmax[j]){
                    ret.push_back(matrix[i][j]);
                }
            }
        }
        return ret;
    }

6、二进制矩阵中的特殊位置

 int numSpecial(vector<vector<int>>& mat) {
        int r=mat.size();
        int c=mat[0].size();
        vector<int> row(r);
        vector<int> col(c);
        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
              int cur=mat[i][j]==1;
              row[i]+=cur;
              col[j]+=cur;
            }
        }
        int res=0;
        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
              if(row[i]==1&&col[j]==1&&mat[i][j]==1){
                  res++;
              }
            }
        }
        return res;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值