Yosgi
Yosgi
Avatar
😀
3d ai agents ai engineering ai systems algorithms algorithms array binary search tree binary tree css design pattern digital twin digital twins engineering frontend full-stack investing investing javascript javascript leetcode life linked list mcp mongodb network node.js performance optimization product engineering projects queue react stack string vue web performance
  • 主要是用来学习并查集的思路,看了答案才下手的。 思路就是先对可交换的字符串进行分组,分组排序之后再组合起来 并查集就是用递归或者while循环实现find , 然后 再用数组和下标的方式实现union var smallestStringWithSwaps = function(s, pairs) { var fa = [] var find = function (x) { if (x === …
    Algorithms Created Tue, 06 Jul 2021 00:00:00 +1200
  • 用时:20min 首先能看出来是一个考察DFS的题目 var swimInWater = function(grid) { let row = grid.length; let col = grid[0].length; var step = 0 while(true) { for(let i = 0 ; i < row ; i ++) { for(let j = 0 ; j < col ; j …
    Algorithms Created Mon, 05 Jul 2021 00:00:00 +1200
  • 首先想到的就是找到所有距离房屋最短距离的heater的距离 r ,然后返回最大的 r var findRadius = function(houses, heaters) { var max = 0 for(let i = 0 ; i < houses.length ; i ++) { var house_position = houses[i] var r = Infinity for(let …
    Algorithms Created Thu, 10 Jun 2021 00:00:00 +1200
  • 用时:60min 拿到题目最快能想到的思路是枚举所有吃完香蕉的速度,找到能吃完香蕉的最小的速度。 枚举的速度范围是[1… 最大堆的香蕉],因为速度不会小于1,也没有速度比最大香蕉堆更快的必要 var minEatingSpeed = function(piles, h) { // 枚举所有可以吃完香蕉的速度,找到最小的 piles = piles.sort((a,b) => a - b) var …
    Algorithms Created Wed, 28 Apr 2021 00:00:00 +1200
  • 用时 : 看了答案 既然是堆的练习,肯定是往堆的思路去靠拢了 由于我们要的仅仅是中位数,其实没有必要把所有的数都排序 可以用两个堆,一个最大堆一个最小堆 当总数为单数(即 最大堆 - 最小堆 个数 = 1),拿到最大堆的最大值 当总数为双数(即最大堆个数 = 最小堆) ,拿到最大堆最大值和最小堆最小值 const swap = function (arr,i,j) { …
    Algorithms Created Wed, 24 Mar 2021 00:00:00 +1300
  • 用时: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) { // …
    Algorithms Created Sun, 21 Mar 2021 00:00:00 +1300
  • 用时:60min 被题目的深度误导,认为计算深度需要由上至下。实际上可以由下至上。 如果左右子树高度相同,返回节点本身以及深度 如果左子树比较深,说明最小最深在左子树,返回左子树以及自己的深度 如果右子树比较深,说明最小深度在右边,返回右子树以及自身深度 var subtreeWithAllDeepest = function(root) { var dfs = function (root) { …
    Algorithms Created Sun, 21 Mar 2021 00:00:00 +1300
  • 用时 : 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 …
    Algorithms Created Thu, 18 Mar 2021 00:00:00 +1300
  • 用时: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 && …
    Algorithms Created Wed, 17 Mar 2021 00:00:00 +1300
  • 用时: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) } …
    Algorithms Created Wed, 17 Mar 2021 00:00:00 +1300