
数据结构与算法基础
文章平均质量分 78
数据结构与算法基础
姬霓钛美
勿在浮沙筑高台
展开
-
[力扣刷题总结](排序篇)
文章目录剑指 Offer 51. 数组中的逆序对解法1:归并排序剑指 Offer 51. 数组中的逆序对力扣链接在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000解法1:归并排序思路:这道题能够用归并排序做的原因是,在merge过程中可以计算出左右两个有序子数组的逆序对数。 而且,“排序”虽然修改了原数组的元素.原创 2022-02-16 09:22:47 · 556 阅读 · 3 评论 -
[力扣刷题总结](数学和字符串篇)
文章目录7. 整数反转解法1:数学7. 整数反转力扣链接给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 &l.原创 2022-01-09 23:24:58 · 1813 阅读 · 0 评论 -
[力扣刷题总结](字典树篇)
文章目录字典树字典树的概念字典树的功能字典树的实现及代码实现208. 实现 Trie (前缀树)解法1:实现Trie472. 连接词解法1:字典树+DFS820. 单词的压缩编码解法1:字典树字典树字典树的概念本小节主要参考参考链接字典树也叫Trie树、前缀树 。顾名思义,它是一种针对字符串进行维护的数据结构。字典树,顾名思义,是关于“字典”的一棵树。即:它是对于字典的一种存储方式(所以是一种数据结构而不是算法)。这个词典中的每个“单词”就是从根节点出发一直到某一个目标节点的路径,路径中每条.原创 2022-01-03 16:57:14 · 869 阅读 · 0 评论 -
[力扣刷题总结](二分查找)
文章目录||||||||||||||||||||||| 二分查找 ||||||||||||||||||||||||||||模板1:寻找一个数模板2:寻找左侧边界的二分搜索模板3:寻找左侧边界的二分搜索|||||||||||||| 标准二分查找一个数 |||||||||||||69. Sqrt(x)解法1:二分查找解法2:牛顿迭代法704. 二分查找解法1:二分查找||||||||||||||||||||||| 二分查找左边界 ||||||||||||||||||||||||||||278. 第一个错误的版.原创 2022-01-01 20:36:01 · 1501 阅读 · 2 评论 -
[力扣刷题总结](链表篇)
文章目录2. 两数相加解法1:链表2. 两数相加力扣连接给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例.原创 2021-12-30 20:55:34 · 1723 阅读 · 0 评论 -
[力扣刷题总结](二叉树篇)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录二叉树理论基础篇1.二叉树的种类2.二叉树的存储方式3.二叉树的遍历方式4.二叉树的定义////////////二叉树的遍历方式///////////////二叉树的递归遍历二叉树的迭代遍历1. 迭代法中序遍历2.迭代法前序遍历3.迭代法后序遍历144. 二叉树的前序遍历解法1:递归遍历解法2:迭代遍历二叉树的层序遍历////////////二叉树的属性///////////////////////////二叉树的修改与改造////原创 2021-12-29 20:21:36 · 1785 阅读 · 0 评论 -
[力扣刷题总结](双指针篇)
文章目录前言~~缩减搜索空间的思想~~11. 盛最多水的容器前言缩减搜索空间的思想11. 盛最多水的容器力扣链接给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,.原创 2021-12-20 22:47:15 · 4418 阅读 · 1 评论 -
[力扣刷题总结](图,DFS和BFS篇)
文章目录~~~~~~~~~~~~图~~~~~~~~~~~~1034. 边界着色解法1:DFS图1034. 边界着色给你一个大小为 m x n 的整数矩阵 grid ,表示一个网格。另给你三个整数 row、col 和 color 。网格中的每个值表示该位置处的网格块的颜色。当两个网格块的颜色相同,而且在四个方向中任意一个方向上相邻时,它们属于同一 连通分量 。连通分量的边界 是指连通分量中的所有与不在分量中的网格块相邻(四个方向上)的所有网格块,或者在网格的边界上(第一行/列或最后一行/列)的所.原创 2021-12-07 16:31:55 · 1258 阅读 · 0 评论 -
[力扣刷题总结](递归和回溯篇)
文章目录~~~~~~~~~~~~回溯~~~~~~~~~~~~37. 解数独解法1:回溯法回溯37. 解数独编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例:提示:board.length == 9board[i].length == 9board.原创 2021-12-06 11:18:16 · 5706 阅读 · 0 评论 -
[力扣刷题总结](每日一题篇)
文章目录372. 超级次方解法1:递归+快速幂372. 超级次方你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入:a = 2, b = [3]输出:8示例 2:输入:a = 2, b = [1,0]输出:1024示例 3:输入:a = 1, b = [4,3,3,8,5,2]输出:1示例 4:输入:a = 2147483647, b = [2,0,0]输出:1198提示:1 <= a <= .原创 2021-12-05 12:02:21 · 4535 阅读 · 0 评论 -
[力扣刷题总结](队列和优先队列(堆)篇)
文章目录~~~~~~~~~~~~优先队列(堆)~~~~~~~~~~~~一.队列和优先队列的差别二.优先队列(堆)的特性三.基本的堆操作四.C++中的堆215. 数组中的第K个最大元素解法1:堆排序优先队列(堆)该部分主要参考最详细版图解优先队列(堆)一.队列和优先队列的差别二.优先队列(堆)的特性三.基本的堆操作四.C++中的堆参考(1)priority_queue 容器适配器定义了一个元素有序排列的队列。**默认队列头部的元素优先级最高。**因为它是一个队列,所以只能访问第一.原创 2021-12-04 20:04:17 · 5647 阅读 · 0 评论 -
[力扣刷题总结](数组,矩阵和哈希表篇)
文章目录~~~~~~~~~~~~哈希表~~~~~~~~~~~~一.什么是哈希表?二.哈希表能解决什么问题?三.常见的三种哈希结构3. 无重复字符的最长子串解法1:滑动窗口+哈希表哈希表本段参考 代码随想录一.什么是哈希表?首先什么是 哈希表,哈希表(英文名字为Hash table,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hash table就可以了)。哈希表是根据关键码的值而直接进行访问的数据结构。这么这官方的解释可能有点懵,其实直白来讲其实数组就是一张哈希表。哈希.原创 2021-12-04 18:26:19 · 932 阅读 · 0 评论 -
[力扣刷题总结](栈和单调栈篇)
文章目录单调栈介绍739. 每日温度解法1:单调栈496. 下一个更大元素I解法1:单调栈+哈希表503. 下一个更大元素II解法1:单调栈+循环数组42.接雨水解法1:双指针解法2:单调栈解法3:动态规划本文部分参考了 代码随想录单调栈介绍1. 什么是单调栈?:从名字上就听的出来,单调栈中存放的数据应该是有序的,所以单调栈也分为单调递增栈和单调递减栈单调递增栈:单调递增栈就是从栈顶到栈底数据是从小到大单调递减栈:单调递减栈就是从栈顶到栈底数据是从大到小2. 怎么能想到用单调栈呢? 什么.原创 2021-11-30 21:54:09 · 2338 阅读 · 0 评论 -
[力扣刷题总结](动态规划篇)
文章目录动态规划动态规划01背包:一维dp数组遍历顺序:for(int i = 0; i < weight.size(); i++) { // 遍历物品 for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量 dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); }}1.倒叙遍历是为了保证物品i只被放入一次2.因为一维dp的写法,背包容量一定.原创 2021-11-22 20:14:47 · 2128 阅读 · 0 评论 -
【数据结构与算法13】查找(续)
文章目录1.查找的基本概念2.线性表的查找3.树表的查找4.散列表的查找散列表的基本概念散列函数的构造方法处理冲突的方法(1)开放定址法(2)链地址法(拉链法)散列表的查找1.查找的基本概念2.线性表的查找3.树表的查找4.散列表的查找散列表的基本概念采用散列技术将记录存储在一块连续的存储空间,这块存储空间称为散列表或者哈希表散列函数的构造方法处理冲突的方法(1)开放定址法(2)链地址法(拉链法)散列表的查找...原创 2021-10-05 18:45:59 · 80 阅读 · 0 评论 -
【数据结构与算法7】树和二叉树
文章目录1.树和二叉树的定义树的定义树的基本术语二叉树的定义2、案例引入3.树和二叉树的抽象数据类型定义4.二叉树的性质和存储结构二叉树的性质满二叉树和完全二叉树二叉树的性质(续)4.遍历二叉树和线索二叉树1.树和二叉树的定义树的定义树的基本术语二叉树的定义2、案例引入3.树和二叉树的抽象数据类型定义4.二叉树的性质和存储结构二叉树的性质满二叉树和完全二叉树二叉树的性质(续)4.遍历二叉树和线索二叉树...原创 2021-09-22 10:54:24 · 95 阅读 · 0 评论 -
【数据结构和算法6】串,数组和广义表
文章目录1.串的定义2.案例引入3.串的类型定义,存储结构及其运算串的存储结构串的模式匹配算法KMP算法4.数组数组的抽象类型定义数组的顺序存储结构5.广义表6.案例分析与实现1.串的定义2.案例引入3.串的类型定义,存储结构及其运算串的存储结构串的模式匹配算法int BF_Find(string& s,string& t){ int i=0,j=0,index =0; while(i<s.size() && j&l.原创 2021-09-16 22:03:50 · 85 阅读 · 0 评论 -
【数据结构和算法5】栈和队列
文章目录一、栈和队列的的定义和特点1.栈2.队列二、案例引入1.栈的应用案例2.队列的应用案例三.栈的表示和实现1.顺序栈的表示和实现2.链栈的表示和实现四.栈和递归五.队列的表示和实现1.队列的循环顺序结构2.队列的链式存储结构一、栈和队列的的定义和特点1.栈2.队列二、案例引入1.栈的应用案例2.队列的应用案例三.栈的表示和实现1.栈的数据同线性表。元素具有相同的类型,相邻元素具有前驱和后继的关系。1.顺序栈的表示和实现两个指针相减是两个.原创 2021-09-13 22:02:28 · 165 阅读 · 0 评论 -
【数据结构与算法4】循环/双向链表及应用
循环链表 双向链表 顺序表和链表的比较 线性表的应用#include <iostream>using namespace std;#define ElemType int#define MAXSIZE 100#include "windows.h"//顺序表的数据结构typedef struct { ElemType *data;//数组首元素的地址 int length;}SqList;//初始化void Ini..原创 2021-09-11 17:03:40 · 180 阅读 · 0 评论 -
【数据结构与算法3】线性表的链式表示和实现
单链表的存储结构的定义//单链表的定义typedef int ElemType;typedef struct LNode{ ElemType val; LNode *next;}LinkNode;单链表的初始化//单链表的初始化//void InitList(LinkList &L)void InitList(LinkNode * &L){//L是一个引用 L = new LinkNode ; //L = (Li...原创 2021-09-07 15:48:00 · 134 阅读 · 0 评论 -
【数据结构与算法1】线性表的定义
Traverse 穿过;来回移动;反驳;阻挠;详细研究;旋转原创 2021-09-04 15:53:18 · 101 阅读 · 0 评论 -
【数据结构与算法2】线性表的顺序表示和实现
#include <iostream>#include <string>#define MAXSIZE 100#define TRUE 1#define FALSE 0#define OVERFLOW -2using namespace std;#include "fact.h"struct student{ int stuID; float score;};struct SqListStu{ student *ElemStu;//..原创 2021-09-06 15:14:29 · 102 阅读 · 0 评论