Siqi Liu
Siqi Liu
Avatar
😀
ai blockchain database design patterns digitaltwin frontend frontend investment javascript javascript leetcode life node.js optimization technology vue vue 工作
  • 第一时间想的是构造二叉树,然后利用每层对称的关系 ,求出父节点 var pathInZigZagTree = function(label) { let stack = [] for(let i = 1 ; i <= label ; i ++) { let level = Math.floor(Math.log(i) / Math.log(2)) if (!stack[level]) { …
    leetcode Created Thu, 29 Jul 2021 00:00:00 +0000
  • 拿到没想到什么好方法,先暴力解 var isCovered = function(ranges, left, right) { for(let i = left ; i <= right ; i ++) { let include = false for(let index = 0 ; index < ranges.length ; index ++) { let [start,end] = …
    leetcode Created Fri, 23 Jul 2021 00:00:00 +0000
  • 考虑到头部也可能产生反转,所以需要一个虚拟头。 在遍历的过程中记录反转后的尾节点和之前的节点。 最后进行节点的链接处理。 var reverseBetween = function(head, m, n) { let noob = new ListNode(0) noob.next = head let cur = noob let index = 0 let A,B while (index < …
    leetcode Created Fri, 23 Jul 2021 00:00:00 +0000
  • 拿到题目的想法是使用双指针指向新旧节点,再加上一个 map 用来映射旧节点和新节点。 递归 var listMap = new Map() var copyRandomList = function(head) { if(head === null) return head if (listMap.get(head)) { return listMap.get(head) } let …
    leetcode Created Thu, 22 Jul 2021 00:00:00 +0000
  • 用时:15min 利用并查集模板即可 var findRedundantConnection = function(edges) { var n = edges.length var fa = new Array(n + 1) var find = function (x) { if (x != fa[x]) { fa[x] = find(fa[x]) } return fa[x] } …
    leetcode Created Wed, 07 Jul 2021 00:00:00 +0000
  • 主要是用来学习并查集的思路,看了答案才下手的。 思路就是先对可交换的字符串进行分组,分组排序之后再组合起来 并查集就是用递归或者while循环实现find , 然后 再用数组和下标的方式实现union var smallestStringWithSwaps = function(s, pairs) { var fa = [] var find = function (x) { if (x === …
    leetcode Created Tue, 06 Jul 2021 00:00:00 +0000
  • 用时: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 …
    leetcode Created Mon, 05 Jul 2021 00:00:00 +0000
  • 首先想到的就是找到所有距离房屋最短距离的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 …
    leetcode Created Thu, 10 Jun 2021 00:00:00 +0000
  • 用时:60min 拿到题目最快能想到的思路是枚举所有吃完香蕉的速度,找到能吃完香蕉的最小的速度。 枚举的速度范围是[1… 最大堆的香蕉],因为速度不会小于1,也没有速度比最大香蕉堆更快的必要 var minEatingSpeed = function(piles, h) { // 枚举所有可以吃完香蕉的速度,找到最小的 piles = piles.sort((a,b) => a - b) var …
    leetcode Created Wed, 28 Apr 2021 00:00:00 +0000
  • 用时 : 看了答案 既然是堆的练习,肯定是往堆的思路去靠拢了 由于我们要的仅仅是中位数,其实没有必要把所有的数都排序 可以用两个堆,一个最大堆一个最小堆 当总数为单数(即 最大堆 - 最小堆 个数 = 1),拿到最大堆的最大值 当总数为双数(即最大堆个数 = 最小堆) ,拿到最大堆最大值和最小堆最小值 const swap = function (arr,i,j) { …
    leetcode Created Wed, 24 Mar 2021 00:00:00 +0000