这道题完全属于基础题,但是如何将基础题写的不像课本上那么啰嗦,也算是本事。
思路应该是非常顺其自然的,需要一个 deque 或者 queue 来做缓存,由于昨晚刚学了CP5上的 deque,所以就选择了前者。通过迭代,将所有下一层级的节点放到 deque 中去, 同时将这一层节点的 value 放到 vector 中去。
唯一需要注意的是,deque 的长度一直在变, 所以迭代的时候,不能用 q.size() 作为一个恒定的标杆,应该多用一个局部变量,如 n ,来记录当前的长度。
这块第一次考虑的时候,想复杂了,竟然弄了两个 deque 来交替,有点粗暴,但却让我 2 分钟解出,在手机上 AC 了。后来想想,其实控制好长度,一个 deque 完全可以胜任。
优质的代码,不应该有废话,目前这个方案,我非常满意了。