首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构专栏
undefined_AlvinLin
创建于2022-10-10
订阅专栏
数据结构知识积累
暂无订阅
共17篇文章
创建于2022-10-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
用JS切换字母大小写
切换字母大小写 输入一个字符串,切换其中字母的大小写 如,输入字符串12aBc34,输出字符串12AbC34 常见思路 正则表达式 通过ASCII码判断 代码 正则 ASCII 功能测试 结果: 性能
算法:用JS实现数字千分位格式化
将数字千分位格式化,输出字符串 如输入数组12050100,输出字符串12,050,100 (注意:逆序判断) 常见思路 转换位数组,reverse,每3位拆分 使用正则表达式 使用字符串拆分 使用数
算法:JS如何实现高效的英文单词前缀匹配
有一个英文单词库(数组),里面有几十万个英文单词 输入一个字符串,快速判断是不是某一个单词的前缀 说明思路,不用写代码 常规思路 第一,遍历单词库数组 第二,indexOf判断前缀 实际时间复杂度超过
算法:JS获取1-10000之前所有的对称数(回文数)
对称数 求1-10000之前的所有对称数(回文) 例如:0,1,2,11,22,101,232,1221 思路1 - 使用数组反转、比较 数字转换为字符串,再转换为数组 数组revers,再join为
算法:用JS实现快速排序,并说明时间复杂度
固定算法,固定思路 找到中间位置 midValue 遍历数组,小于midValue放在left,否则放在right 继续递归。最后concat拼接,返回 细节 获取midValue的两种方式 使用sp
算法:获取字符串中连续最多的字符及次数
传统思路 嵌套循环,找出每个字符串的连续次数,并记录 看似时间复杂度是O(n^2) 但实际时间复杂度是多少?---O(n) 因为有跳步 嵌套循环思路代码: 结果: 双指针思路 O(n) 定义指针i和j
算法:将数组中的0移动到末尾
如输入[1,0,3,0,11,0] 输出 [1,3,11,0,0,0] 只移动0,其他顺序不变 必须在原数组进行操作 如果不限制“必须在原数组操作” 定义part1 part2 两个数组 遍历数组,非
算法:JS求斐波那契数列的第n值 + 连环问:青蛙跳台阶
斐波那契数列 用JS计算斐波那契数列的第n个值 注意时间复杂度 公式 f(0) = 0 f(1) = 1 f(n) = f(n - 1) + f(n - 2) 递归 递归 - 大量的重复计算 优化 不
算法:求一个二叉搜索树的第k小值
二叉树 是一棵树 每个节点,最多只能由2个子节点 树节点的数据结构 { value, left?, right?} 二叉树的遍历 前序遍历: root -> left -> right 中序遍历: l
算法:给一个数组,找出其中和为n的两个元素
有一个递增的数组[1,2,4,7,11,15] 和一个n=15 数组中有两个数,和是n。即4+11===15 写一个JS函数,找出这两个数 常规思路 嵌套循环,找到一个数,然后去遍历下一个数,求和,判
算法:用JS实现二分查找,并说明时间复杂度
思路: 递归 - 代码逻辑更加清晰 非递归 - 性能更好 时间复杂度O(logn) - 非常快 非递归实现: 递归实现 性能测试 划重点 凡有序,必二分 凡二分,时间复杂度必然包含O(logn)
面试连环问:链表和数组,哪个实现队列更快?
分析 数组是连续存储,push很快,shift很慢 链表是非连续存储,add和delete都很快(但查找很慢) 结论:链表实现队列更快 链表实现队列 单向链表,但同时要记录head和tail 要从ta
算法:定义一个JS函数,反转单向链表
链表 链表是一个物理结构(非逻辑结构),类似于数组 数组需要一段连续的内存区间,而链表是零散的 链表节点的数据结构{value, next?, prev?} 创建链表代码 链表vs数组 都是有序结构
算法:两个栈实现一个队列
请用两个栈,实现一个队列 功能 add delete length 队列 先进先出 API: add delete length 数组模拟队列 存在shift性能问题 逻辑结构vs物理结构 队列是逻辑
算法:判断字符串是否括号匹配
问题 一个字符串s可能包含{}()[]三种括号 判断s是否是括号匹配的 如(a{b}c)匹配,而{a(b或{a(b}c)就不匹配 栈 先进后出 API: push pop length 相关的:队列,
算法:将一个数组旋转K步
题目 思路 代码 复杂度分析 答案 重点:function rotate(arr: number[], k: number): number[]{ const length = arr.lengt
关于算法复杂度
什么是复杂度 程序执行时所需要的计算量和内存空间(和代码是否简洁无关) 复杂度是数量级(方便记忆、推广),不是具体的数字 一般针对一个具体的算法,而非一个完整的系统 时间复杂度 - 程序执行时所需的计