【刷爆LeetCode】五月算法集训(11)矩阵

题目来源于知识星球—英雄算法联盟,五月算法集训专题

前言

跟随英雄算法联盟博主—英雄哪里出来,每天完成相应的算法练习,一个月后,必定会有所成长!


一、1351.统计有序矩阵中的负数(简单)

1.题目描述

https://img-blog.csdnimg.cn/9228089a7fce408c9bef9d20774f271b.jpeg =500x

2.解题思路

直接进行双层循环遍历数组即可,遇到元素小于0,计数器++。
本题需要注意的是 行数=grid.size(); 列数=grid[0].size();

3.代码演示(C++)

class Solution 
{
public:
    int countNegatives(vector<vector<int>>& grid) 
    {
        int ans=0;
        int n=grid.size();//行数
        int m=grid[0].size();//列数
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(grid[i][j]<0)
                {
                    ans++;
                }
            }
        }
        return ans;
    }
};

4.题目链接

题目传送门


二、1672.最富有客户的资产总量(简单)

1.题目描述

https://img-blog.csdnimg.cn/2d4646142b14485bbfd589dec0946081.jpeg =500x

2.解题思路

首先用一个vector数组来存储每位客户的资产。矩阵的行数为客户的数量,矩阵
的列数等于每名客户存储资产的银行数,只需要把每行的元素值相加,即可得到
每名客户的总资产,最后进行排序,返回最大值即可。

3.代码演示(C++)

class Solution 
{
public:
    int maximumWealth(vector<vector<int>>& accounts) 
    {
        int m=accounts.size();//行数
        int n=accounts[0].size();//列数
        vector<int>sum(m);//用数组sum来存储每位客户的资产
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                sum[i]+=accounts[i][j];
            }
        }
        sort(sum.begin(),sum.end());//对客户资产进行排序,返回最大值
        return sum[m-1];

    }
};

4.题目链接

题目传送门


三、832.翻转图像(简单)

1.题目描述

https://img-blog.csdnimg.cn/43544a780b9f4ca1b4642362deeb23da.jpeg =500x

2.解题思路

水平翻转时将一行中的元素交换位置即可,反转时,将元素值与1进行异或,
最后返回二维数组即可。

3.代码演示(C++)

class Solution 
{
    void swap(int *a,int *b)
    {//将两个数字交换位置
        int temp;
        temp=*a;
        *a=*b;
        *b=temp;
    }
public:
    vector<vector<int>> flipAndInvertImage(vector<vector<int>>& image) 
    {
        int m=image.size();//行数
        int n=image[0].size();//列数
        for(int i=0;i<m;i++)
        {//先对每一行的元素交换位置
            for(int j=0;j<n/2;j++)
            {
                swap(&image[i][j],&image[i][n-1-j]);
            }
            for(int j=0;j<n;j++)
            {
                image[i][j]^=1;//对每个数字异或1,实现原地反转
            }
        }
        return image;
    }
};

4.题目链接

题目传送门


四、1329.将矩阵按对角线排序(中等)

1.题目描述

https://img-blog.csdnimg.cn/173198a222ce48e0aa327999697ed022.jpeg =500x

2.解题思路

暂时还不会做

3.代码演示(C++)


4.题目链接

题目传送门


总结

每天跟随英雄哥学习相关的算法,一个月会收获很多,如果你想了解更多关于知识星球的内容,欢迎联系我!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值