day39 | 打家劫舍

三道小偷的题目。

基础的题目主要就是当前节点保存两个状态f偷与f不偷。

  • 不偷的话就是和前面偷情况下相等。
  • 偷的话就是max(前不偷+curval,前偷) 值得注意的就是 虽然当前状态是偷的,但不一定是真的偷了当前节点。

然后就是环形题目,分成两种情况考虑就可以

最后是树状dp 可以用后序遍历求解。 或者用BFS换成数组形式,然后逆推即可。

dp[parentId][0]= dp[2*parentId][1]+dp[2*parentId+1][1]+node[parentId].val
dp[parentId][1]= max(dp[2*parentId][0],...[1])+max(dp[2*parentId+1][0],...[1])

全部评论

相关推荐

09-25 00:00
已编辑
电子科技大学 Java
球球与墩墩:这不是前端常考的对象扁平化吗,面试官像是前端出来的 const flattern = (obj) => { const res = {}; const dfs = (curr, path) => { if(typeof curr === 'object' && curr !== null) { const isArray = Array.isArray(curr); for(let key in curr) { const newPath = path ? isArray ? `${path}[${key}]` : `${path}.${key}` : key; dfs(curr[key], newPath); } } else { res[path] = curr } } dfs(obj); return res; }
查看3道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务