IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 九日集训day7【刷题】【九日集训】 -> 正文阅读

[数据结构与算法]九日集训day7【刷题】【九日集训】

420f4875220b451ab61fa46c79fe122c

前言

hello 大家好啊,今天是第七天啦,加油加油。

🐱🐱🐱

1351. 统计有序矩阵中的负数

class Solution {
public:
    int countNegatives(vector<vector<int>>& grid) {
        int rows = grid.size(), cols = grid[0].size();
        int ans = 0;
        for(int i = rows-1; i >= 0; --i)
        {
            for(int j = cols-1; j >= 0; --j)
            {
                if(grid[i][j] < 0)
                    ++ans;
            }
        }
        return ans;
    }
};

1572. 矩阵对角线元素的和

class Solution {
public:
    int diagonalSum(vector<vector<int>>& mat) {
        int n = mat.size();
        int sum = 0;
        for(int i = 0; i < n; ++i)
        {
            sum += mat[i][i];
        }
        for(int i = 0; i < n; ++i)
        {
            if(n-i-1 != i)
                sum += mat[i][n-i-1];
        }
        return sum;
    }
};

1672. 最富有客户的资产总量

单独统计每一行的再比较就行

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

766. 托普利茨矩阵

class Solution {
public:
    bool isToeplitzMatrix(vector<vector<int>>& matrix) {
        int rows = matrix.size(), cols = matrix[0].size();
        if(rows == 1 || cols == 1)
            return true;
        for(int i = 0; i < rows-1; ++i)
        {
            for(int j = 0; j < cols-1; ++j)
            {
                if(matrix[i][j] != matrix[i+1][j+1])
                    return false;
            }
        }
        return true;
    }
};

1380. 矩阵中的幸运数

class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        int rows = matrix.size(), cols = matrix[0].size();
        //开2个数组,分别存每一行的最小值,每一列的最大值
        vector<int> row(rows, 0);
        vector<int> col(cols, 0);
        vector<int> ret;
        for(int i = 0; i < rows; ++i)
        {
            for(int j = 0; j < cols; ++j)
            {
                if(matrix[i][j] < matrix[i][row[i]])
                    row[i] = j;
                if(matrix[i][j] > matrix[col[j]][j])
                    col[j] = i;
            }
        }
        for(int i = 0; i < rows; ++i)
        {
            if(i == col[row[i]])
            {
                ret.push_back(matrix[i][row[i]]);
            }
        }
        return ret;
    }
};

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

/*
- 计数:即每一行1的个数 和 每一列1的一个
- 再次遍历一旦出现1,且对应的行和列数量都是1,就是结果,累加
*/
class Solution {
public:
    int numSpecial(vector<vector<int>>& mat) {
        int rows = mat.size();
        int cols = mat[0].size();
        int rowCnt[rows];
        int colCnt[cols];
        memset(rowCnt, 0, sizeof(rowCnt));
        memset(colCnt, 0, sizeof(colCnt));

        for (int i = 0; i < rows; ++i)
        {
            for (int j = 0; j < cols; ++j)
            {
                int curr = mat[i][j] == 1;
                rowCnt[i] += curr;
                colCnt[j] += curr;
            }
        }

        int res = 0;
        for (int i = 0; i < rows; ++i)
        {
            for (int j = 0; j < cols; ++j)
            {
                if (mat[i][j] == 1 && rowCnt[i] == 1 && colCnt[j] == 1)
                {
                    ++res;
                }
            }
        }

        return res;
    }
};

463. 岛屿的周长

class Solution {
    constexpr static int dx[4] = {0, 1, 0, -1};
    constexpr static int dy[4] = {1, 0, -1, 0};
public:
    int islandPerimeter(vector<vector<int>> &grid) {
        int n = grid.size(), m = grid[0].size();
        int ans = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                if (grid[i][j]) {
                    int cnt = 0;
                    for (int k = 0; k < 4; ++k) {
                        int tx = i + dx[k];
                        int ty = j + dy[k];
                        if (tx < 0 || tx >= n || ty < 0 || ty >= m || !grid[tx][ty]) {
                            cnt += 1;
                        }
                    }
                    ans += cnt;
                }
            }
        }
        return ans;
    }
};

尾声

🌹🌹🌹

写文不易,如果有帮助烦请点个赞~ 👍👍👍

Thanks?(・ω・)ノ🌹🌹🌹

😘😘😘

👀👀由于笔者水平有限,在今后的博文中难免会出现错误之处,本人非常希望您如果发现错误,恳请留言批评斧正,希望和大家一起学习,一起进步ヽ( ̄ω ̄( ̄ω ̄〃)ゝ,期待您的留言评论。
附GitHub仓库链接

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:17:10  更:2022-03-21 21:18:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:25:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码