[问题] 想请问leetcode694和inner func相关问题

楼主: benchen0812 (あBen)   2019-03-27 12:52:48
Hi all,
今天刷到一题
leetcode694 题目是
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's
(representing land) connected 4-directionally (horizontal or vertical.) You
may assume all four edges of the grid are surrounded by water.
Count the number of distinct islands. An island is considered to be the same
as another if and only if one island can be translated (and not rotated or
reflected) to equal the other.
先附上我的写法还有解答
https://imgur.com/fnrJUsG
然后error message
https://imgur.com/ycaClM6
这边想请问的是
我看我的写法和解答的写法除了他用inner
然后我的function 是define 在class 底下之外 应该是没有什么太大差别
(如果有错误请帮我指证谢谢)
这边想请问的是 如果我是用inner function 做recursion
请问function return address是不是也是存在stack
如果是的话 想请问一下为什么我的写法会max recursion depth exceeded?
但是他的写法却可以过?
两种recursion depth 应该要一样不是?
谢谢!
作者: lemon651 (小明)   2019-03-27 17:38:00
你有发现你跟解答的终止条件不一样吗?第一长宽应该是<不是<= 不过这不影响max depth,第二你把grid[x][y]看过的没有纪录起来也没有转成能当False的东西 等于你的每一层都会互相调用,肯定爆栈,举个例你11 从左边的往右边dfs 右边的又往左dfs 等于这个递归完全不会终止你给的解答 用了seen纪录过走过的点 并用一个set纪录形状 这题因为空间复杂度最差还是m * n所以用一个set纪录走过的点不影响空间复杂度我是建议你不要让他等于0啦 这样你走完一遍就把整个input改变了 而且还不可逆

Links booklink

Contact Us: admin [ a t ] ucptt.com