自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 trie树(字典树)

字典树(Trie),也称为前缀树或单词查找树,是一种用于存储字符串集合的数据结构,特别适用于处理前缀相关的问题。字典树的基本特点是通过共享公共前缀来节省存储空间,并且可以高效地进行字符串查询操作。

2024-10-01 23:50:15 976

原创 哈希表和字符串哈希算法

哈希表(Hash Table)是一种数据结构,它可以通过一个哈希函数将键(key)映射到存储位置,从而实现高效的数据查找、插入和删除操作。哈希表的特点是能够在常数时间(O(1))内完成查找和更新,前提是哈希冲突处理得当。

2024-09-30 23:19:29 818

原创 单调递增/递减栈

单调栈分为单调递增栈和单调递减栈。

2024-09-28 23:09:41 311

原创 KMP算法

BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将主串SS的第一个字符与模式串TT的第一个字符进行匹配,若相等,则继续比较SS的第二个字符和TT的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种暴力算法。我们来看一个例子BF算法我们很明显可以看到会出现很多多余的匹配,因为匹配错误后就要回退到开始的下一个位置,这就导致我们BF算法的时间复杂度为O(m*n)

2024-09-28 09:35:19 642

原创 数组模拟邻接表存图

图(graph)是一种非线性数据结构,由顶点和边组成。我们可以将图 抽象地表示为一组顶点和一组边的集合。G(V,E)图分为有向图和无向图,下图带箭头为有向图,无箭头为无向图我们可以用两种方式来表示图,邻接矩阵和邻接表,我们主要来讲一下邻接表。

2024-09-26 23:38:06 313

原创 单链表实现和数组模拟单链表

请分别用,和实现。

2024-09-25 23:34:46 438

原创 区间合并算法

区间合并就是有两个区间我们把两个区间合并成一个区间我们来看一道题。

2024-09-24 23:24:38 331

原创 离散化算法

在C++中,离散化通常指的是将连续的数值或数据转化为离散的形式。这在数值分析、信号处理、图像处理和机器学习等领域都非常常见。

2024-09-23 23:08:22 492

原创 桶排序和计数排序(非比较排序算法)

计入我们要给一串数组排序,我们用桶排序应该怎么排序呢?

2024-09-22 20:20:55 540

原创 二进制和位运算

参考资料参考资料。

2024-09-22 15:09:06 1096

原创 双指针算法

我们主要来讲解同向(快慢)双指针。

2024-09-21 20:58:19 842

原创 前缀和与差分(二维)

下面是一个二维数组,我们要求(1,1)到(2,2)区间内的所有元素的和,最原始的方法就是遍历每个元素然后一个一个加起来,此时时间复杂度为O(n*m)。我们之前学过一维数组的前缀和那么我们可以这样优化一下,此时时间复杂度优化到了O(min{n,m})。还可以在优化吗?答案是可以的。我们依然根据一维数组的前缀和的思想来考虑二维数组在上面的公式中我们发现出现了i-1和j-1,那么我们就需要考虑边界防止i或j为0时造成数组越界,1.当且我们可以得到2.当我们可以得到(一维数组前缀和)

2024-09-21 00:05:48 473

原创 前缀和与差分(一维)

我们着重要记住差分标记我们根据上面的差分标记来试着操作一下我们发现把标记后的差分数组,进行一次前缀和操作,可以得到最终的答案。为什么会这样呢?我们来看一下下图这就是差分标记的由来。那么使用差分后时间复杂度是多少呢,为O(n+m)是一个线性的复杂度。

2024-09-20 00:36:55 437

原创 高精度乘法和除法

高精度乘法的核心思想是将两个大数的乘法运算拆解为多个小规模运算,并最终将结果合并得到最后的乘积。

2024-09-19 11:56:17 290

原创 高精度加法和减法

在C/C++中,我们经常会碰到限定数据范围的情况,我们先来看看常用的int和long long两种数据类型的范围吧。C++标准规定:int占一个机器字长。在32位系统中int占32位,即4个字节,所以int的范围是[-2的31次方,2的31次方-1],为1e8数量级;longlong的范围则是[-2的63次方,2的63次方-1],为1e18数量级。如果超过该数量级,该怎么办?此时就需要用到高精度算法。

2024-09-18 21:44:22 1171

原创 整数二分算法和浮点数二分算法

现实中运用到二分的就是猜数字的游戏 假如有A同学说B同学所说数的大小,B同学要在1~100中间猜中数字65,当B同学每次说的数都是范围的一半时这就算是一个二分查找的过程。

2024-09-17 23:40:04 873

原创 分治算法归并排序

把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

2024-09-17 14:01:36 310

原创 快速排序算法

每次都取数组的第一个元素作为基准元素,凡是大于这个基准元素的都放在它的右边,凡是小于这个基准元素的都放在它的左边。具体步骤如下:1.设置两个变量i和i(也称为哨兵),令序列第一个元素为基准元素。2.i指向序列的最左边,j指向序列的最右边,j从右往左试探,i从左往右试探,直到j找到小于基准的数就停止,i找到大于基准的数就停止,交换i和j指向的两个数,j继续往左试探,i继续往右试探3.如果i与j相遇,则i或j上的元素与基准元素交换,则这一轮排序结束。对基准元素两边的序列重复以上操作。

2024-09-16 19:33:18 437

原创 拓扑排序算法

上图意思为在我想要完成C7这件事之前我必须先完成事件C1,在完成C5这件事之前我必须先完成事件C6和C3.由图可以提看出拓扑序列是不唯一的。

2024-09-15 20:50:43 963

原创 快速幂算法

快速幂算法。

2024-09-15 00:07:33 610

原创 力扣第560题 和为k的子数组

我们用一个变量 sum 来记录当前元素之前所有元素的累加和,也就是前缀和。前缀和可以帮助我们快速计算某一段子数组的和。

2024-09-13 20:01:20 631

原创 BFS广度优先搜索和DFS深度优先搜索解决迷宫问题

BFS广度优先搜索解决迷宫问题。

2024-09-12 20:59:26 402

原创 动态规划01背包问题

现有四个物品,小偷的背包总容量为8,怎么可以偷到价值最多的物品(注意:每件物品最多只有一件)如:物品编号:1 2 3 4物品重量:2 3 4 5物品价值:3 4 5 8。

2024-09-12 10:02:24 352

原创 数据结构与算法图论 并查集

原题目:现在有若干家族图谱关系,给出了一些亲戚关系,如Marrv和Tom是亲戚,Tom和Ben是亲戚等等。从这些信息中,你可以推导出Marry和Ben是亲戚。请写一个程序,对于我们的关于亲戚关系的提问,以最快速度给出答案。

2024-09-11 21:09:36 918

原创 力扣第200题 岛屿数量

记录一下刷题历程 力扣第200题 岛屿数量。

2024-09-10 22:25:41 701

原创 力扣第79题 单词搜索

记录一下刷题历程 力扣第79题 单词搜索。

2024-09-09 23:50:24 572

原创 力扣第42题 接雨水

记录一下刷题历程 力扣第42题 接雨水。

2024-09-08 20:25:10 1270

原创 力扣第347题 前K个高频元素

记录一下刷题历程 力扣第347题 前K个高频元素。

2024-09-08 12:39:46 465

原创 力扣第12题 整数转罗马数

记录一下刷题历程 力扣第12题 整数转罗马数。

2024-09-07 16:46:19 368

原创 力扣第62题 不同路径

记录一下刷题历程 力扣第62题 不同路径。

2024-09-06 19:35:10 671

原创 力扣第2题 两数相加

记录一下刷题历程 力扣第2题 两数相加。

2024-09-05 14:20:23 251

原创 力扣第213题 打家劫舍2

记录一下刷题历程 力扣第213题 打家劫舍2。

2024-09-04 16:02:21 750

原创 力扣第124题 二叉树中的最大路径和

记录一下刷题历程 力扣第124题 二叉树中的最大路径和。

2024-09-04 00:41:11 747

原创 怎么筛出来素数

int prime[N]:用于存储找到的质数。int cnt:质数的计数器,初始值为 0。bool st[N]:布尔数组,表示每个数是否为非质数(true 表示非质数,false 表示质数)。int sum[N]:备用数组,在此函数中并未使用。埃拉托斯特尼筛法具有 𝑂(𝑛loglog𝑛) 的时间复杂度,是找出所有小于等于 n 的质数的经典算法。

2024-09-03 23:52:46 399

原创 力扣第100题 相同的树

记录一下刷题历程 力扣第100题 相同的树。

2024-09-03 12:08:31 289 1

原创 力扣第198题 打家劫舍

记录一下刷题历程 力扣第198题 打家劫舍。

2024-09-02 23:54:36 758

原创 力扣第39题 组合总和

记录一下刷题历程 力扣第39题 组合总和。

2024-09-02 13:48:04 770

原创 力扣第55题 跳跃游戏

记录一下刷题历程 力扣第55题 跳跃游戏。

2024-09-02 00:12:35 952

原创 力扣第300题 最长递增子序列

记录一下刷题历程 力扣第300题 最长递增子序列。

2024-09-01 15:07:52 549

原创 力扣第19题 删除链表第n个节点

记录一下刷题历程 力扣第19题 删除链表第n个节点。

2024-08-31 19:43:29 341

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除