题解 | #牛群避免水洼#

牛群避免水洼

https://www.nowcoder.com/practice/43ba14f2c7344ec5bccdf2d650f2eaf2

考察的知识点:矩阵;

解答方法分析:

  1. 定义两个变量 startRow 和 startCol 分别表示矩阵的起始行和起始列,初始值为0。
  2. 定义两个变量 endRow 和 endCol 分别表示矩阵的结束行和结束列,初始值为矩阵的行数和列数减1。
  3. 进入一个循环,判断 startRow 是否小于等于 endRow 并且 startCol 是否小于等于 endCol,如果不满足则退出循环。
  4. 在循环中,先按照从左到右的顺序遍历 startRow 行的元素,并将其加入到有序列表中。
  5. 遍历完成后,将 startRow 增加1,表示下一次遍历从下一行开始。
  6. 再按照从上到下的顺序遍历 endCol 列的元素,并将其加入到有序列表中。
  7. 遍历完成后,将 endCol 减少1,表示下一次遍历从前一列开始。
  8. 判断 startRow 是否小于等于 endRow 并且 startCol 是否小于等于 endCol,如果满足则继续循环,否则退出循环。
  9. 最终得到的有序列表就是按照从左到右、从上到下的顺序遍历矩阵得到的。

所用编程语言:C++;

完整编程代码:↓

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param matrix int整型vector<vector<>>
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > avoidPuddles(vector<vector<int> >& matrix) {
        int m = matrix.size();
        int n = matrix[0].size();
        vector<bool> row(m, false);
        vector<bool> column(n, false);
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (matrix[i][j] == 0) {
                    row[i] = true;
                    column[j] = true;
                }
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (row[i] || column[j]) {
                    matrix[i][j] = -1;
                }
            }
        }
        return matrix;
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务