7/6, LinkedIn 面经
在 dfs 中直接 root = null 是无法删除 root 的.
因为对于 object, java 是 pass by value, 传递过去的是 object reference.
在这个帖子中举例:
换句话讲,dfs 中作为参数的 TreeNode root 是一个新建的 reference,默认指向的是原参数 root 的同一个位置。因此我们可以对它指向的 object 进行各种操作.
但是当我们更改这个 reference 指向时,我们只是改了函数自己的那个 copy 所指向的 object,而对原始参数指向的东西没有任何改变。
于是这题如果试图在 dfs 中用 root = null 删除节点,实际上我们不会删除任何节点,只会更改在自己这层 call 中, root 指向的节点而已。因此我们之前可以用其他 method call 在 dfs 中对各种 list, set, map 和 collection 里面的值进行修改,但是改 method call 里面的 reference 并不会对原 object 造成任何影响。

knows(A, B)
简单说就是,这题的 subproblem 之间,不具有 optimal substructure.
n = 32
这题的 dfs 里 base case 还不太一样,我们做的是试图直接把 n 加进去作为一个解,同时要注意不能直接 return ,否则后面的解就都看不到了。
真正的 return ,是在对于 n 来讲从大到小连 i = 2 都尝试过作为 factor 之后自然结束搜索。
去地里看了一圈,这题更有意思的解法是利用 DNA 只有四种字母的性质去做 encode / decode.
Last updated