首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法
DT1997
创建于2023-04-04
订阅专栏
用ts实现各种数据结构,伴随着刷leetcode。所有的封装都放在https://github.com/phm-front/data-structure
等 2 人订阅
共21篇文章
创建于2023-04-04
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
算法(六):二分查找的实际应用
上一章节讲了二分查找和左右边界的查找,其实一些题目是可以使用二分查找的思想来解答的,但是它不会把所有的条件准备好让我们来使用二分查找,这就需要我们自己去创造条件来使用二分查找,下面通过一道题目来具体了
算法(五):二分查找
概念 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中
vue3中的算法:最长递增子序列
vue3的diff算法使用了最长递增子序列,目的是找出最多的不需要移动的节点,以达到节省性能的目的,如果你还不清楚vue3的diff算法,请移步这里 leetcode中类似题目 leetcode中有一
leetcode刷题(三):二叉树和动态规划
二叉树 226. 翻转二叉树:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 思路:通常遇到树结构的题目我们应该首先考虑递归,这道题使用递归就非常简单,只需要交换左右子节点: 使
leetcode刷题(二):队列和链表
队列 239. 滑动窗口最大值:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回滑动
leetcode刷题(一):字符串和栈
字符串 leetcode14题最长公共前缀:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 "" 思路:声明一个变量保存公共前缀,遍历字符串数组中的一个字符串,判断其
算法(四):动态规划
概念 动态规划(英语:Dynamic programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动
算法(三):排序算法(下)
堆排序 堆排序是利用最大/最小堆来进行排序,如果你还不熟悉堆,请看这里:https://juejin.cn/post/7221142609518428219。具体思路: 首先构建一个最大堆,然后将堆的
算法(二):排序算法(中)
归并排序 归并排序的基本思想是将待排序数组分成若干个子数组,然后将相邻的子数组归并成一个有序数组,最后再将这些有序数组归并成一个整体有序的数组。这其实就是分治法,把大问题分解成小问题来解决。 归并排序
算法(一):排序算法(上)
排序算法就是研究如何对一个集合进行高效排序的算法,在计算机科学所使用的排序算法通常以以下标准分类: 计算的时间复杂度:使用大O表示法,也就是实际测试消耗的时间 内存使用量:比如外部排序,使用磁盘来存储
数据结构(十一):红黑树
由于红黑树的实现过于复杂,这里只介绍一些红黑树的特性及与AVL树的对比 红黑树概念 红黑树是一种自平衡二叉查找树,被称为“对称二叉B树”,它拥有很多特性(可以参照下图): 符合所有二叉搜索树的基本特性
数据结构(十):AVL树主体封装
封装AVL树主体 继承常规二叉搜索树 由于AVL树也是二叉搜索树,所以很多方法是可以继承常规的二叉搜索树的,我们在前面章节已经封装过二叉搜索树,所以这里我们直接继承即可。 由于要使用常规二叉搜索树的插
数据结构(九):树拓展(平衡二叉搜索树),AVL树节点封装
平衡树 平衡树是一种特殊的二叉搜索树,其目的是通过一些特殊的技巧来维护树的高度平衡,从而保证树的插入、搜索、删除等操作的时间复杂度都较低(趋近O(logn))。 那么为什么二叉搜索树需要平衡呢?因为当
基础数据结构(八):队列拓展(双端队列和优先级队列)
双端队列 双端队列在单向队列的基础上解除了一部分限制:允许在队列的两端添加和删除元素。如此一来它便具有了队列和栈性质,这样方便我们解决一些问题。比如leetcode的239题(以后会在刷队列算法题的章
基础数据结构(七):堆结构
认识堆结构 堆的本质是一种特殊的树形数据结构,使用完全二叉树来实现。最大堆和最小堆的封装实现。包括上浮、下沉、原地建堆等
基础数据结构(六):图结构
图的定义 维基百科这样定义图结构:图(英语:graph)是一种抽象数据类型,用于实现数学中图论的无向图和有向图的概念。 图的数据结构包含一个有限(可能是可变的)的集合作为节点集合,以及一个无序对(对应
基础数据结构(五):树结构、二叉搜索树封装
维基百科这样解释树结构:树(英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。
基础数据结构(四):哈希表,使用typescript封装哈希表
哈希表是基于数组来实现的,但是相对于数组,它有着更多的优势: - 它可以提供非常快速的插入、删除、查找操作 - 无论多少数据,插入和删除的时间复杂度都可以达到O(1)
基础数据结构(三):线性结构(链表)使用typescript封装链表
链表和数组都可以存储一系列的数据,我们第一篇有说过,数组有着插入数据效率低、访问数据效率高的特点,而链表正好相反,它有着插入数据效率高、访问数据效率低的特点。 不关注数据结构的前端开发人员可能不熟悉链
基础数据结构(二):线性结构(队列)
队列是一种受限的线性结构,有着先进先出的特性,受限之处在于只允许在队列的前端进行删除操作,在队列的后端进行插入操作 下面基于数组实现一个队列(其实使用链表实现队列性能会更好一点,后续链表章节实现):
下一页