Neil Ding

Results 39 comments of Neil Ding

@dianadujing 返回一个二维数组,每个元素里是树的这一层的所有node。 ![screenshot 2014-01-16 23 26 45](https://f.cloud.github.com/assets/902357/1937744/9bee5b86-7f2f-11e3-91c4-da932c037144.png) 主要是熟悉一下Tree的数据结构,以及能快速写出广度优先搜索。

原来不是用广度优先搜索,用普通的递归方法遍历树都可以,只要在递归的时候把level记住,当做索引存到数组里。 ``` java static void levelTree(TreeNode root) { ArrayList ret = new ArrayList(); int level = 0; levelTreeHelper(root, ret, level); int i = 0; for(ArrayList layer: ret) { System.out.println("level "+...

发出这一题的原因是,如果看了[关于动态规划](https://github.com/GingerBear/IS-Job-Hunting/issues/18)里的第一篇文章的初级部分,就可能会想出解这道题的思路。这题的做法是,先按照体积(vol)排序,然后重量(weight)的最长非降子序列的长度 (讲DP基本都会讲到的一个问题LIS:longest increasing subsequence)。 我看过了那篇讲LIS的文章,但依然还是感到疑惑它的**“状态”**和**“状态转移方程”**是怎么找出来的,难道没有每一个思路?只能靠灵感闪现嘛? 按照文章里说的,LIS的**“状态”**d[i]就是,以arr[i]结尾的最大非降子序列的长度。比如`[4, 12, 3, 23, 43, 2]`,d[3]就是以23为结尾的最大非降子序列(LIS)为`[12, 23]`的长度,所以是2。**“状态转移方程”**,也就是d[i]跟前面的d的关系,是对于在第i个数**之前的**并且**比它小**的数,在这些数中,以它们为结尾的LIS中最大的一个加上1,就等于以第i个数结尾的LIS,表达式即 ``` for j < i && arr[j] < arr[i] d[i] = max{1, d[j]} + 1 ``` 与1比较的原因是,arr[i]可能比之前所有的数都小,那么以arr[i]结尾的LIS就是它自己一个数了。 那么,为什么会想到把**"以arr[i]结尾的最大非降子序列的长度"**作为状态呢?按照通常的思维(或者说我的第一反应),会把**“到arr[i]为止最大的LIS”**作为状态。有人会说,以前者才能找到状态转移方程,后者无法得出方程。但这么说是建立在已经知道结果的情况下才说出来的。我还是没能想出一个合理的正向思考方法,在这里求解答。

@xujiahang11 最近在准备前端的东西就没刷题了,多线程不太懂啊

what are we expecting user to see when they open the url for an object?

I don't fully understand this. Let discuss next week.

need to support different user role