
JS数据结构及算法
申申あ
只想学好前端但必须发小论文的程序媛
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
牛客Top101 BM28 二叉树的最大深度-- JS实现
求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。(注:叶子节点是指没有子节点的节点。)数据范围:0≤n≤100000,树上每个节点的val满足∣val∣≤100要求: 空间复杂度 O(1),时间复杂度 O(n)输入:{1,2}返回值:2示例2输入:{1,2,3,4,#,#,5}返回值: 完整代码:原创 2022-12-07 11:28:01 · 497 阅读 · 1 评论 -
牛客Top101 BM21 旋转数组的最小数字--JS实现
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。数据范围:1≤n≤10000,数组中任意元素的值: 0≤val≤10000要求:空间复杂度:O(1) ,时间复杂度:O(logn)输入:[3,4,5,1,2]返回值:1示例2输入:[3,100,200,3]返回值:3完整代码原创 2022-12-07 10:13:36 · 398 阅读 · 0 评论 -
牛客Top101 JS实现得到两个链表的第一个公共结点
输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)数据范围:n≤1000要求:空间复杂度 O(1),时间复杂度 O(n)例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示: 可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共原创 2022-12-06 10:08:57 · 338 阅读 · 0 评论 -
牛客Top101 JS实现得到链表中倒数最后k个结点
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。 数据范围:0 ≤ n ≤ 10^50≤n≤105,0 ≤ ai ≤ 10^9,0 ≤ k ≤ 10^9要求:空间复杂度 O(n),时间复杂度 O(n)进阶:空间复杂度 O(1),时间复杂度 O(n)例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示: 其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有原创 2022-12-06 09:50:30 · 219 阅读 · 0 评论 -
牛客Top101 JS判断链表中是否有环
判断给定的链表中是否有环。如果有环则返回true,否则返回false。数据范围:链表长度 0≤ n ≤ ≤10000,链表中任意节点的值满足 |val|原创 2022-12-05 11:12:59 · 273 阅读 · 0 评论 -
牛客Top101 JS合并两个排序的列表
输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围: 0 ≤n≤1000,-1000≤节点值≤1000要求:空间复杂度 O(1),时间复杂度 O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示: 或输入{-1,2,4},{1,3,4}时,合并后的链表为{-1,1,2,3,4,4},所以对应的输出为{-1,1,2原创 2022-12-05 10:35:39 · 1053 阅读 · 0 评论 -
牛客Top101 JS实现反转链表
解释,其实p1指针的作用是用于记录原始链表,p2的作用是用来临时存储结果的, p1=pHead.next;和 pHead=p1;其实就是用来移动指针的作用,核心是pHead.next=p2;p2=pHead这两行代码。给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)。经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。如当输入链表{1,2,3}时,原创 2022-12-02 15:15:41 · 540 阅读 · 0 评论 -
JS实现二叉排搜索树
二叉树中的节点最多只能有两个子节点:一个是左侧子节点,另一个是右侧子节点。而二叉搜索树又可以简称BST,它是二叉树的一种,但是只允许你在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大的值。上面就可以实现二叉搜索树的初步构建了。接下来来了解一下树的遍历,直接看几个例子就可以理解了。原创 2022-12-01 20:35:46 · 590 阅读 · 0 评论