leet_code 417无法通过,结果是空,老师帮忙看下

来源:3-1 数据结构遍历的意义

Leon2170781

2019-09-04

leet_code的most vote大部分复制粘贴了到面板也不能通过

int d[4][2] = {{-1,0}, {0,1}, {1,0}, {0, -1}};

int m, n;

vector<vector<bool>> pv;
vector<vector<bool>> av;

int inArea(int x, int y) {
  return x >= 0 && x < m && y >= 0 && y < n;
}

void helper(vector<vector<int>>& matrix, vector<vector<bool>> visited, int x, int y) {
  visited[x][y] = true;
  for (int i = 0; i < 4; i++) {
    int newx = x + d[i][0];
    int newy = y + d[i][1];

    if (inArea(newx, newy) && !visited[newx][newy]
        && matrix[newx][newy] >= matrix[x][y])
      helper(matrix, visited, newx, newy);
  }
}

vector<vector<int>> pacificAtlantic(vector<vector<int>>& matrix) {
  vector<vector<int>> res;

  m = matrix.size();
  if (m == 0)
    return res;
  n = matrix[0].size();

  pv = vector<vector<bool>>(m, vector<bool>(n, false));
  av = vector<vector<bool>>(m, vector<bool>(n, false));

  for (int i = 0; i < m; i++) {
    helper(matrix, pv, i, 0);
    helper(matrix, av, i, n - 1);
  }

  for (int j = 0; j < n; j++) {
    helper(matrix, pv, 0, j);
    helper(matrix, av, m - 1, j);
  }

  for (int i = 0; i < m; i++)
    for (int j = 0; j < n; j++)
      if (pv[i][j] && av[i][j]) {
        vector<int> it(i, j);
        res.push_back(it);
      }
  return res;
}
写回答

1回答

liuyubobobo

2019-09-04

你的代码对于这样的图,返回都是空的:[[1,1],[1,1]]


这是一个 2*2 的图,只有4个节点。请使用单步跟踪的方式,仔细调试你的程序,看一下你的程序为什么最终返回为空?


debug 是计算机专业的重要技能,也是核心技能,更是学习算法的关键。只有不停地debug,不停地寻找自己写的代码的错误,反思自己为什么犯这个错误,以为程序会怎么执行,实际是怎么执行的,不断总结,才能进步哦。


如果你在 debug 的过程中,遇到了类似“我认为对于我的数据,在某一行代码执行以后,结果应该是A,但却是B,不知道为什么”这样的问题,随时欢迎你来问答区:)


最后他推荐两篇我的公众号文章:

1 《高效学习的秘密》,尤其是6,7两点:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247483836&idx=1&sn=90854aa76507281403e4dd9cd434a12b&chksm=fd8caefacafb27ec78f999fde4f1217c04c6e2ff28cf51fe511d8fa29d484d9281ff91de8c9c&token=1245482286&lang=zh_CN#rd

2 《万能学习法》:https://mp.weixin.qq.com/s?__biz=MzU4NTIxODYwMQ==&mid=2247484417&idx=1&sn=f774306b0ea726d979eba0c13b75496f&chksm=fd8cab47cafb2251f7bebcc3c540d0216989499ed9ad0cf0f3bd8817412ea79ea6b31cc66a8d&token=1245482286&lang=zh_CN#rd


加油!:)

0
2
liuyubobobo
回复
Leon2170781
一定要用最小测试用例。加油!:)
2019-09-04
共2条回复

玩转算法系列--图论精讲(Java版)

30+小时系统学习,bobo带你克服被图论支配的恐惧

1591 学习 · 324 问题

查看课程