Siqi Liu
Siqi Liu
Avatar
😀
ai blockchain database design patterns digitaltwin frontend frontend investment javascript javascript leetcode life node.js optimization technology vue vue 工作
  • 用时:10min 一道简单题应该不会让我手写最大堆吧 const swap = function (arr,i,j) { [arr[i],arr[j]] = [arr[j],arr[i]] } class MaxHeap { constructor() { this.count = 0 this.data = new Array(this.count + 1) } shiftUp(k) { // …
    leetcode Created Sun, 21 Mar 2021 00:00:00 +0000
  • 用时:60min 被题目的深度误导,认为计算深度需要由上至下。实际上可以由下至上。 如果左右子树高度相同,返回节点本身以及深度 如果左子树比较深,说明最小最深在左子树,返回左子树以及自己的深度 如果右子树比较深,说明最小深度在右边,返回右子树以及自身深度 var subtreeWithAllDeepest = function(root) { var dfs = function (root) { …
    leetcode Created Sun, 21 Mar 2021 00:00:00 +0000
  • 用时 : 10min 利用前序遍历二叉树递增的性质解决 var minDiffInBST = function(root) { var min = Infinity var pre = null var dfs = function (root) { if (!root) return if (root.left) { dfs(root.left) } if (pre == null) { pre …
    leetcode Created Thu, 18 Mar 2021 00:00:00 +0000
  • 用时:10min 前序从上至下计算,没什么好说的 二进制转10 进制挺费劲的,我直接parseInt(path, 2) var sumRootToLeaf = function(root) { var ans = 0 var dfs = function (root,path) { if (!root) return path += root.val if (!root.left && …
    leetcode Created Wed, 17 Mar 2021 00:00:00 +0000
  • 用时:5min 虚拟节点 + 后序遍历 就可以愉快的秒了 var removeLeafNodes = function(root, target) { var dfs = function (root) { if (root.left) { root.left = dfs(root.left) } if (root.right) { root.right = dfs(root.right) } …
    leetcode Created Wed, 17 Mar 2021 00:00:00 +0000
  • 用时: 偷偷看了答案 本来把问题想复杂了,想着维护一个最大堆,从上往下传递然后每次判断是否大于最大值 看了答案后发现只需要传递一个max,判断是否比max大,然后从下到上获取左右节点的值,返回左右节点和 加自身是否符合就好了 var goodNodes = function(root,max = root.val) { if (!root) return 0 var left = 0 max = …
    leetcode Created Wed, 17 Mar 2021 00:00:00 +0000
  • 用时:6min 很简单,中序遍历,计算两边子树是否存在 1 的值,没有就去掉。凡事左右子树或者自身包含 1 ,返回 true 。否则返回 false var pruneTree = function(root) { var DFS = function (root) { if (!root) return false var left = DFS(root.left) var right = …
    leetcode Created Wed, 17 Mar 2021 00:00:00 +0000
  • 看题型是求从根节点出发的,首先想到的是自顶向下的DFS,带着参数向下传递,结束条件没有左右儿子 直接前序遍历走起,可以认为是前面的节点都处理好了 var sumNumbers = function(root) { var ans = 0 var DFS = function (root,path) { if (!root) return path += root.val if …
    leetcode Created Tue, 16 Mar 2021 00:00:00 +0000
  • 用时:15min 用时:15min 拿到题的第一反应是是用递归,然后直接开始写了后发现 递归需要满足的条件是问题可以拆分成子问题,但是根据题意,我们需要求的是每个节点左右节点和的差值,这个 “左右节点和” 对于每个节点来说,都是不一样的问题 所以还是双递归 var findTilt = function(root) { var total = 0 var innerDFS = function …
    leetcode Created Tue, 16 Mar 2021 00:00:00 +0000
  • 用时:20min 因为是求 ” 每个节点出发的为sum的路径” 很明显就想到了回溯,因为是二叉树,所以就双递归。 外层递归用来找到所有的节点,内层用来算节点的路径 var pathSum = function(root, sum) { var res = 0 var dfs = function (root,total,visited) { if (!root) return if (total …
    leetcode Created Tue, 16 Mar 2021 00:00:00 +0000