首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
算法
小墙程序员
创建于2024-05-03
订阅专栏
算法
等 2 人订阅
共12篇文章
创建于2024-05-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
数据结构和算法(十二)堆
如图,由于堆是一个完全二叉树,因此堆可以通过数组来实现。 当堆通过数组来实现时,我们就可以通过索引来快速获取它的左右节点。比如当节点i的索引为k时,它的左子树的索引为2k,右子树的索引为2k+1,它的父节点的索引为k/2.
数据结构和算法(二)——数组及其相关算法
数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 如图,往 k = 2 的位置插入 10。 如果在数组的末尾插入元素,那就不需要移动数据了,这时的时间复杂度为O(1)。但如果在数组的开头插入元素,那所有的数据都需要依次往后移动一位,…
数据结构和算法(五)——队列及其相关算法
只允许队尾入队,队头出队(即先进先出)的存储结构。 使用数组实现的队列,一般面试常考的队列是循环队列(下面介绍实现)。该队列的特点是: 循环队列是由双指针 head 、 tail 分别指向队列头和队列尾来实现的。实现循环队列时要注意其队列是否为空和队列是否已经满的判断。条件如下…
数据结构和算法(十)二叉搜索树
二叉搜索树:在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。 二叉树的查找非常简单。先获取根节点存储的数据,如果相等,则直接返回对应的节点;如果小于data,则遍历右子树;如果大于data,则遍历左子树。代码如下: 二叉…
数据结构和算法(八)——你真的懂二叉树遍历吗
如果你之前学过二叉树,你一定清楚二叉树的遍历方式有四种,分别为前序遍历、中序遍历、后序遍历、层序遍历。而二叉树遍历除层序遍历位通常使用递归的方式来实现。 使用递归代码遍历二叉树非常简单,根据前序、中序、后序遍历分别将输出放在前面、中间、后面就行了。 如果面试要让你实现二叉树的遍…
数据结构和算法(九)时间复杂度实例分析
时间复杂度的一般计算方式在之前的文章数据结构与算法(一)——时间复杂度讲过。一般算法的时间复杂度都可以通过之前的方法计算,不过还是有一些算法,它的时间复杂度比较难计算。下面就以非常常见的面试题合并K个升序链表 这里先来个简化版,先来看看如何实现两个排序链表合并。如图 这个算法题…
数据结构和算法(十一)并查集
在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集的合并和查询问题。 我们合并集合的子元素时,是让一个集合的首节点指向另一个集合的首节点。一般情况下,让集合元素少的首节点指向集合元素多的首节点。还有一种方式是比较树的高度(或者叫秩)来合并。 节点1的指针指向自己说明…
数据结构与算法(一)——时间复杂度
假设上述代码,执行一行代码的时间为 t ,则花费的总时间为(2*n^2+2*n+4)*t。当 n 非常大时,上述代码花费的时间 中,则称其为 θ(g(n))。也即,当上、下限相同时则可用大 θ 表示法,如图: O(1)只是常量级时间复杂度的一种表示方法,并不是指只执行了一行代码…
数据结构和算法(三)——链表及其相关算法
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针。 链表插入删除…
数据结构和算法(四)——栈及其相关算法
栈是一种运算受限的线性表,只允许在一端(栈顶)插入和删除数据。栈主要包含两个操作,入栈和出栈,也就是在栈顶插入一个数据和从栈顶删除一个数据,其时间复杂度为O(1)。 算法思路:使用一个辅助栈来保存最小值。当push元素时,如果辅助栈为空则直接插入元素;如果辅助栈不为空,则用pu…
数据结构和算法(六)——二分法
初始化左指针 left = 0, 右指针 right = nums.length - 1。 则其中点 pivot = left + ((right - left)>>1). 如果 target = nums[pivot],则找到了目标元素,返回 pivot。 如果 target…
数据结构和算法(七)——树的基础知识
不同于线性的数据结构数组、链表、栈,树是非线性的。如图所示(图片来源leetcode),树是由n(n>=1)个有限节点组成一个具有层次关系的集合。 结点的度:结点拥有的子树的数目。例如A的度为3。 二叉树是每个节点最多有两个子树的树结构。如图所示: 二叉树是最常用的树。 除了叶…