我们有一个数组 ` [5,1,6] `,我们要生成所有的子组合 ` [ [ 5 ], [ 5, 1 ], [ 5, 1, 6 ], [ 5, 6 ], [ 1 ], [ 1, 6 ], [ 6 ] ] `,针对任意数组,该如何求出它的所有子组合呢?
继续阅读“想了一个简单的面试题”分类: leetcode
想了一个面试题:树的过滤
给候选人做的题,应该好理解,如果讲半天题目,对方都不理解,我都怀疑是不是我的表达能力不行。题目足够简单,我讲解题目也省事,对方不理解或者不能做出来,则淘汰就好,我心里也没有负担。
继续阅读“想了一个面试题:树的过滤”想了一个面试题
想出一个原创一点,不会太难,也不会太简单,考察候选人的平时练习和思维。有一个对象如下:
继续阅读“想了一个面试题”leetcode 515 题解
一般来说,不想怎么写题解,因为不能穷尽所有的解法。解这个题过程中,有些有意思的地方,顺便就记录一下。原题在这里,我直接写答案了。
bfs
简单的直觉,就是广度优先遍历。拿到每层的节点,保持在数组里,再求出最大的值。
var largestValues = function(root) {
let arr = []
if(!root) return arr
let stack = [root]
while(stack.length) {
let temp = []
let max = -Infinity
while(stack.length) {
let node = stack.pop()
let v = node.val
max = Math.max(v, max)
node.left && temp.push(node.left)
node.right && temp.push(node.right)
}
arr.push(max)
stack = temp
}
return arr
};
提交后,速度挺慢的,怎么回事呢?先把节点放入,再拿出来,相当于把整个树遍历了 2 次。
继续阅读“leetcode 515 题解”