题解 | #牛群避免水洼#

牛群避免水洼

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;
    }
};

全部评论

相关推荐

陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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