队列 前言队列是一种基于 FIFO(先进先出)的数据结构,是一种只能在一端进行插入,在另一端进行删除操作的特殊线性表。它按照先进先出的原则存储数据,先进入的数据,在读取数据时会先被读出来 一、队列我们称数据进入到队列的动作称为入队,数据从队列中出去的动作为出队,如下图: 1.1、 API 设计 类名 Queue<T> 构造方法 Queue() :创建 Queue 对象 成员方 2022-08-11 数据结构和算法 > 数据结构 #原创 #数据结构和算法
堆 一、堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。 堆的特性: 1)、它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。 2)、它通常用数组来实现。 具体方法就是将二叉树的结点按照层级顺序放入数组中,根结点在位置 1(之所以不从 0 开始,是为了方便我们索引的操作),它的 2022-08-10 数据结构和算法 > 数据结构 #原创 #数据结构和算法
栈 前言栈是一种基于 FILO(先进后出)的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 一、栈我们称数据进入到栈的动作称为压栈,数据从栈中出去的动作为弹栈,如下图: 1.1、栈 API 设计 类名 Stack<T> 构造方法 2022-08-10 数据结构和算法 > 数据结构 #原创 #数据结构和算法
无重复字符的最长子串(七) 一、题目描述这是 LeetCode 热题 HOT 100 上第三题:无重复字符的最长子串,难度为 中等。 Tag:「哈希表」、「数组」、「滑动窗口」 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 123输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示 2022-08-09 数据结构和算法 > 算法 #原创 #数据结构和算法
两数相加(六) 一、题目描述这是 LeetCode 热题 HOT 100 上第二题:两数相加,难度为 中等。 Tag:「链表」 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 123输入:l1 = [2,4,3] 2022-08-08 数据结构和算法 > 算法 #原创 #数据结构和算法
两数之和(五) 一、题目描述这是 LeetCode 热题 HOT 100 上第一题:两数之和,难度为 简单。 Tag:「数组」、「哈希表」 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 123输入 2022-08-07 数据结构和算法 > 算法 #原创 #数据结构和算法
存在重复元素(四) 一、题目描述这是 LeetCode 上的一道算法题:存在重复元素,难度为 简单。 Tag:「数组」、「哈希表」、「排序」 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例 1: 12输入:nums = [1,2,3,1]输出:true 示例 2: 12输入:nums = [1,2,3,4]输出:false 2022-08-06 数据结构和算法 > 算法 #原创 #数据结构和算法
线性表之链表中篇 一、双向链表双向链表也叫双向表,是链表的一种,它由多个节点组成,每个节点都由一个数据域和两个指针域组成,数据域用来存储数据,其中一个指针域用来指向其后继节点,另一个指针用来指向前驱节点。链表的头节点的数据域不存储数据,指向前驱节点的指针域值为 null ,指向后继节点的指针域指向第一个真正存储数据的节点,如下图: 1.1、节点 API 设计 类名 Node<T> 构造方法 2022-08-05 数据结构和算法 > 数据结构 #原创 #数据结构和算法
线性表之链表上篇 前言之前我们介绍了使用顺序存储结构实现顺序表,我们发现虽然顺序表的查询很快,时间复杂度为 O(1),但是增删的效率是比较低的,因为每一次增删操作都伴随着大量的数据元素移动。这个问题有没有解决方案呢? 答:有,我们可以使用另外一种存储结构实现线性表:链式存储结构。 一、链表介绍链表是一种物理存储单元上非连续,非顺序的存储结构,其物理结构不能直观的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中 2022-08-04 数据结构和算法 > 数据结构 #原创 #数据结构和算法
线性表之顺序表 前言1)、线性表是最基本,最简单,也是最常用的一种数据结构,一个线性表是 n 个具有相同特性的数据元素的有限序列。 2)、线性表中数据存储的方式可以是顺序存储,也可以是链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表。 今天我们主要介绍顺序表。 一、顺序表的实现顺序表是在计算机中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素,使得线 2022-08-03 数据结构和算法 > 数据结构 #原创 #数据结构和算法