数据结构之顺序表
程序运行截图:首先,看到构造方法:add方法:总结,通过上面的源码分析我们可以发现:并且当放满之后,每一次的扩容都是原来的1.5大小。这个时候就是直接给数组开辟了你指定的大小。除此之外,ArrayList还有一个比较特殊的构造方法,你可以直接传入其他的任何实现了Collection接口的实现类作为参
堆的概念和代码实现
目录1. 堆的概念和性质什么是堆:堆的性质:2.堆的实现定义堆主函数向下调整算法堆的创建堆的插入向上调整算法堆的删除获取堆顶元素堆的判空堆内元素个数打印堆内元素堆的销毁建堆的时间复杂度推导3.堆的应用堆排序现实中我们通常把堆使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的
每日刷题记录 (四)
LeetCode: 面试题 01.08. 零矩阵描述:编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。第二题: 合法二叉搜索树LeetCode: 面试题 04.05. 合法二叉搜索树描述:实现一个函数,检查一棵二叉树是否为二叉搜索树。第三题: 特定深度节点链表LeetCode:
堆排序【手写小根堆】
堆排序,小根堆,大根堆,完全二叉树,向下调整,向上调整,down,up堆是一个高效的优先级队列,我们可以把堆看做一棵完全二叉树的数组。性质:根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。将要排序的所有值放到一棵完全二叉树的各个结点中,这时候的二叉树不用具备堆的性质,利用up或者
【C++】STL——list模拟实现
list的模拟实现,主要对list正向迭代器与反向迭代器进行阐述,详细解析
二叉树oj题目
单值二叉树解题思路代码二叉树的最大深度题目描述解题思路代码相同的树题目描述解题思路代码对称二叉树题目描述解题思路代码二叉树的前序遍历题目描述解题思路代码二叉树的中序遍历题目描述代码二叉树的后序遍历题目描述代码另一棵树的子树题目描述解题思路代码二叉树遍历题目描述代码...
map和set
map和set的简介,以及AVL树与红黑树插入的实现,及红黑树封装map和set
浅谈二叉树
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。遍历方法有:前序遍历、中序遍历、后续遍历
数据结构——堆的实现与应用
我们知道二叉树有两种存储结构:一种是链式结构,一种是数组结构。由于数组结构的特殊性,它通常被用来存储完全二叉树。而数组结构的完全二叉树中又有一个特殊的数据结构,那就是堆。这一节将介绍堆的实现和堆的应用。...
双向带头循环链表之重拳出击
一、 链表的8种结构二、 双向带头循环链表的实现结构的创建和初始化 申请结点初始化尾插打印头插尾删 头删判空 链表长度 在pos位置之前插入结点删除pos位置的结点三、完整代码 总结 双向带头循环链表的结构是这样的:好让我们上手写一下。 首先我们写一下我们所需要的头文件其次我们在创建它的结构时要有
数据结构之泛型
上述代码改进:定义泛型类的时候,可以传入多个参数:✅关于泛型的注意点:三,泛型的使用3.1,语法【类型推导:】3.2,裸类型四,泛型的编译通过查看我们的字节码文件,可以看到我们的占位符T都会被替换成Object。那既然说将泛型T会替换成Object,那么就会有几个问题了?程序运行结果:所以,最为正确
图解迪杰斯特拉(Dijkstra)最短路径算法
【干货满满!】在介绍最短路径之前我们首先要明白两个概念:什么是源点,什么是终点?在一条路径中,起始的第一个节点叫做源点;终点:在一条路径中,最后一个的节点叫做终点;注意!源点和终点都只是相对于一条路径而言,每一条路径都会有相同或者不相同的源点和终点。而最短路径这个词不用过多解释,就是其字面意思:在图
LeetCode 热题 HOT 100 -> 1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。LeetCode原题链接方法1:暴力枚举话不多说
数据结构与算法——线性表(链表篇)
本篇文章,主要详细解读和总结线性表的链式存储结构——链表,包括单链表、双链表、静态链表以及循环链表,讲解较为全面,图文并茂,总结各链表的特性以及基本操作,干货满满,各位小伙伴们请细细品读,你会收获你想要的知识的!......
【数据结构】有妙手、本手、俗手?这7道二叉树题,我打赌你们一个都不会
💯秒杀大法:跳出递归的(极端条件)➕左右子树的➕光说不练 假本事,下面我们操刀试试看🔍🏷️力扣地址:🌈965. 单值二叉树💫关键思路:💯圣经秒杀大法:👆综上:💥特别注意:🌠动图解析:👇🏻代码实现💡:1️⃣遍历法:2️⃣递归法🏷️力扣地址:🌈100. 相同的树🏷️解题关
【C语言 - 数据结构】万字详解快速排序、归并排序
你是我黄昏时买到一束花的快乐!1、hoare版本 2、挖坑法3、前后指针法 有了前面的讲解,我们对于hoare版本的快速排序已经有了一定的了解了,我们现在实现其代码部分:(大家可以先理解我对hoare版本的定义再来看其实现代码,或者是结合起来理解) 贴一张图方便大家理解 2.3前后指
数据结构课设—C语言实现通讯录管理系统(顺序表实现)
数据结构课设—C语言实现通讯录管理系统(顺序表实现)
滑动窗口__最长不含重复字符的子符串_和为S的连续正整数序列(剑指offer)
滑动窗口是指在数组、字符串、链表等线性结构上的一段,类似一个窗口,而这个窗口可以依次在上述线性结构上从头到尾滑动,且窗口的首尾可以收缩。我们在处理滑动窗口的时候,常用双指针来解决,左指针维护窗口左界,右指针维护窗口右界,二者同方向不同速率移动维持窗口。...
你真的了解二叉树吗?(上篇)
讲二叉树之前先了解一下树的概念,树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。· 有一个特殊的结点,称为根结点,根节点没有前驱结点· 除根节点外,其余结点被分成M(M>0)个互不相交的集合T
数据结构之复杂度
一个算法的好坏我们主要从两个方面来进行定义:1,时间复杂度,2,空间复杂度2.3,推导大O阶方法的标准所以,根据以上的规则,上面的代码的执行次数我们用大O渐进法得到的最终结果就是 O(N^2)。示例一:基本执行次数:2N + 10,时间复杂度O(N)。示例二:基本执行次数:M + N,时间复杂度O(