- 博客(40)
- 收藏
- 关注
原创 数据结构--二叉树构造与遍历顺序的相互转化
摘要:本文系统介绍了二叉树的三种遍历方式(先序、中序、后序)及其实现原理,详细阐述了如何根据遍历序列(先序+中序或后序+中序)重构二叉树的方法。同时介绍了线索二叉树的概念,通过利用空指针存储遍历序列的前驱后继信息实现高效遍历。文中通过具体示例演示了遍历序列的分析过程和二叉树重构步骤,为理解二叉树结构和遍历算法提供了清晰的指导。
2025-11-21 20:33:31
653
原创 数据结构--顺序表与链表
本文摘要: 顺序表和链表是两种基本线性数据结构。顺序表采用连续存储,支持O(1)随机访问,但插入删除效率低(O(n)),需预分配空间;链表通过指针动态连接节点,插入删除高效(O(1)),但随机访问需遍历(O(n))。顺序表适合查询频繁场景,链表适合动态操作。文章详细介绍了二者的结构定义、基本操作实现(初始化、插入、删除、查找等)及完整代码示例,并对比了优缺点:顺序表存储密度高但扩容成本大,链表灵活但访问效率低且内存开销大。
2025-10-24 23:58:45
966
原创 AcWing算法 DFS 之排列数字,N-皇后问题(python,c++代码实现)
本文介绍了深度优先搜索(DFS)的基础知识及其在排列数字和N皇后问题中的应用。DFS通过递归和回溯实现,适用于解决全排列等组合问题。排列数字问题展示了如何用path数组保存排列状态,通过标记数组避免重复使用数字。N皇后问题则利用三个标记数组(列、主/副对角线)来确保皇后位置的合法性,通过逐行放置皇后并回溯寻找所有解。文章提供了C++和Python两种语言的代码实现,详细解释了递归终止条件、状态标记和恢复等关键步骤。这两个经典案例充分体现了DFS"一路到底、回溯尝试"的核心思想。
2025-07-15 15:50:13
1239
原创 一二维前缀和与差分
前缀和是一种重要的预处理技术,常用于快速计算数组中某个区间内元素的总和。对于一个给定的数组 arr,其前缀和数组 prefix_sum 的每个元素 prefix_sum[i] 表示原数组 arr 中从索引 0 到索引 i 的所有元素的总和。设原数组为 arr = [a₀, a₁, a₂, ..., aₙ₋₁],那么前缀和数组 prefix_sum 满足:1.2 一维前缀和的用法前缀和的主要用途是高效地计算数组中任意区间 [left, right](其中 left 和 right 分别是区间的起始和
2025-05-17 15:55:49
677
原创 前端 CSS 样式书写与选择器 基础知识
CSS(层叠样式表)是用于修饰HTML标签样式和排版的技术,通过控制字体、颜色、边距等属性来美化网页。CSS样式可以通过行内样式、内嵌样式和外链样式表三种方式书写,分别通过style属性、<style>标签和外部CSS文件实现。
2025-05-12 23:16:42
1598
原创 前端HTML基础知识
HTML(HyperText Markup Language,超文本标记语言)是构成网页的基本元素,是一种用于创建网页的标准化标记语言。HTML不是一种编程语言,而是一种标记语言,通过标签来描述网页的结构和内容。超文本是指超越纯文本的文本,这意味着HTML不仅能包含文本,还能包含图片/表格/列表/链接/按钮等内容。HTML 使用**标签**来标记网页内容。不同的标签有不同的功能,学习HTML就是学习如何使用这些标签来构建网页。也称为标记或元素,用于在网页中标记和定义内容。每个标签有特定的语法和功能。
2025-05-01 23:15:03
1289
原创 2025第十六届蓝桥杯python B组满分题解(详细)
此次蓝桥杯共8道题(2道填空,6道编程)满分100。与去年的题相比难度降低了不少,第一道编程题简直送分,刚学的小白估计也会。我本人大一,刚学python不久,我只能说这次比赛中基本没用到什么算法,全是暴力,考前学习的DFS,BFS,二维前缀差分等等都没用上,虽然比赛中有的题我暴力也没做出来。当然,这套题想拿高分也不容易,面对巨大数据量,时间复杂度是个问题。下面给大家分享一下满分题解,以下代码在洛谷均可通过,现在蓝桥官网上还没更新,不知在蓝桥官网上测评如果。欢迎各位大佬对我的题解进行点评指正。
2025-04-20 18:56:56
7457
26
原创 蓝桥杯模拟题--约数的个数(约数和质因数的区别)
约数是指能够整除一个整数的数。如果整数a除以整数的商正好是整数而没有余数,我们就说b是a的约数。例如,6可以被1,2,3,4整除,所以1、2、3、6都是6的约数。用代码实现十分简单,只需一个for循环即可。
2025-03-25 17:48:02
399
原创 python前缀和详解+蓝桥杯练习题--巧克力
前缀和是一种重要的预处理技术,常用于快速计算数组中某个区间内元素的总和。对于一个给定的数组arr,其前缀和数组prefix_sum的每个元素表示原数组arr中从索引0到索引i的所有元素的总和。设原数组为,那么前缀和数组prefix_sum。
2025-03-21 13:58:03
436
原创 python中ord()和chr()转化ASCII数值+解密字符串例题
ASCII 即美国信息交换标准代码(American Standard Code for Information Interchange),是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。随着计算机技术的发展,ASCII 码逐渐被扩展为 8 位编码,可表示 256 个字符,以支持更多的字符集。
2025-03-19 12:01:39
1071
原创 BFS,DFS带图详解+蓝桥杯算法题+经典例题
DFS 是一种用于遍历或搜索图或树的算法。它从起始节点开始,沿着一条路径尽可能深地探索下去,直到无法继续或者达到目标节点,然后回溯到上一个节点,继续探索其他路径。通常使用递归或者栈(Stack)来实现。在递归实现中,函数不断调用自身来深入探索下一个节点;在使用栈的实现中,将节点压入栈中,每次从栈顶取出节点进行处理,并将其未访问的邻接节点压入栈中。例如,对于一个图结构,从节点"A"开始 DFS 搜索,首先访问"A",然后选择"B"进行深入探索,访问"B"后再访问"D",当"D"
2025-03-18 22:33:07
2180
2
原创 python进制转化+蓝桥杯真题
2.十进制转八进制( oct() ) 3.十进制转十六进制( hex() )当十进制转化为其他进制时,都带有两个字符的前缀,二进制(0b),八进制(0o),十六进制(0x),可利用切片操作将其去除5.进制转化的原理(手算方法)1、二进制(Binary)——>十进制(Decimal) 诀窍:以小数点为界,整数位从最后一 位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则 从左向右开始
2025-03-12 20:07:42
1401
原创 2024蓝桥杯真题--神奇闹钟(时间模块)
datetime.date 表示日期的类。属性有 year,month,daydatetime.datetime 表示日期时间,上面的属性都有,还有 hour,minute,second,microseconddatetime.timedelta 表示时间间隔,即2个时间点之间的长度,可用于时间计算此题用到的有与。
2025-03-10 18:46:41
802
原创 2024蓝桥杯真题--连连看
此方法容易理解,但是时间复杂度高,面对大数会出现超时现象,在蓝桥测试数据中只能有50%的通过率,一半数据因超时无法完成1.2.1 取出键值对,并对值循环判断1.3完整代码输入输出2.方法二:对角线计数此方法时间复杂度低,可以通过全部测试案例,但较难理解观察矩阵我们可以发现,凡是符合要求的坐标,两个相同的值必须出现在对角线上,这样才能满足坐标值差的绝对值相等导入collections模块中的Counter,对对角线上的数字计数利用for循环和while循环从矩阵左下角
2025-03-08 14:12:59
1045
原创 LeetCode No.1两数之和查找
t=13mydict={}m=num[i]# 检验差值是否在列表中,如果在则返回当前值和i值else:# 否则建立 {数:下标} 的键值对。
2025-03-03 17:00:00
564
原创 哈希算法--猜数字游戏
sec_dic={}gue_dic={}# 定义两个字典,记录每个数组中数字出现的个数count1=0# 记录完全才对的数的个数count2=0# 记录大小猜对但位置不对的个数。
2025-03-02 23:09:03
750
原创 哈希算法--团体赛问题
检查两个列表长度是否相等,如果不相等则肯定不匹配mydict={}# mydict用来储存赛事出场顺序和出场选手的对应关系user={}# user用的记录已经使用的阵容。
2025-03-01 11:58:02
455
原创 动态规划--爬楼梯问题
- 如果想要到达第n阶台阶-- 倒数一步有两种走法:从第n-1台阶跳上来或从第n-2台阶跳上来-- 那么到n-1阶台阶的走法有f(n-1)个,到n-2阶台阶的走法有f(n-2)个-- 两种走法的种数相加就是n阶台阶的情况下的所有种数-- 即f(n)=f(n-1)+f(n-2)
2025-02-26 21:45:35
932
原创 归并排序(递归)
归并排序法是针对已经排好的两个或两个以上的数列,通过合并的方式,将其组合成一个有序的大数列。使用归并排序法为一个数列排序时,首先将无序的数列分成若干小份。分若干分的规则就是不断把每段长度除以2(对半分),直到分到不能再分为止,然后对最小分进行排序,最后再逐步合并成一个有序的大数列。
2025-02-17 17:02:33
398
原创 马走日(骑士巡游)问题(递归,DFS,回溯)
本题运用到了递归,深度优先,回溯算法。以(0,0)为中心建立直角坐标系,假设从(0,0)开始,由于走位为日字形,每一个象限都有两个方向,共八个方向。
2025-02-13 20:50:36
1261
原创 质数因子,找区间内的素数(质数)
def su(n):f=Trueif n%i==0:f=Falsebreakreturn fli=[]a=int(input('区间左端点:'))b=int(input('区间右端点;'))if su(i):print(li)# 说明:# f=True# f=False# break# return f# 这个函数用于判断给定的整数 n 是否为素数。# 它首先将标志变量 f 设置为 True,表示假设 n 是素数。
2025-02-08 13:37:52
372
原创 动态规划--背包问题
动态规划算法是将待解决的问题拆分成一系列相互交叠的子问题。是将待求解问题分解为若干个子问题(阶段)。动态规划算法需要按顺序求解子问题,前一子问题的解为后一子问题的求解提供了有用信息。在求解任一子问题时,都要列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题后,最后一个子问题就是初始问题的解。简单来说,就是不让程序做重复的事情。什么问题适合采用动态规划算法呢?能采用动态规划算法求解的问题一般具有如下3个特点。
2025-02-04 15:32:38
543
原创 深度优先算法(DFS)
深度优先搜索(Depth-First Search,简称 DFS)是一种用于遍历或搜索树或图的算法。该算法沿着树的深度遍历树的节点,尽可能深地搜索树的分支。当节点 v 的所在边都己被探寻过,搜索将回溯到发现节点 v 的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
2025-01-31 21:45:14
227
原创 贪心算法(找零问题)
贪心算法又称为贪婪算法,其在问题求解上考虑的不是整体意义上的最优解,而是当前看来的最优解。这就好比竭泽而渔,把水放干之后捕鱼,不顾长远利益,只考量眼前的贪心行为。从某种意义上说,贪心算法是动态规划算法的一种特例。两者的相似之处在于,最优解问题都可以拆分成若干个相似的子问题。不同之处在于,动态规划算法需要求解整个问题的最优解,每次选择的结果都会对最终的结果有影响;贪心算法中,每次选择的结果不会对最终结果有影响,只是考虑眼前的问题。
2025-01-31 21:23:47
350
原创 阶乘与阶乘之和,判断素数(质数)
是否为素数(质数)。素数是指一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数。判断用户输入的一个整数。
2025-01-13 14:23:39
321
原创 def return 自定义函数
def 函数名(形参a,形参b):函数体调用格式函数名(实参1,实参2)return a+b含义:在一个函数中定义另一个函数print('学习')print('python基础')#定义与调用是同级的,注意缩进course() #course()与def对齐study()# 参数解包fn(*list) # 等价于 fn(list[0],list[1],list[2])dict = {"a": 1, "b": 2, "c": 3} # 元组、列表解包是 位置传参。
2025-01-10 14:36:06
749
原创 字符串常见操作
map(int,...)是一个内置函数,它将int函数应用到split()得到的字符串列表的每个元素上,将字符串转换为整数。例如,['1', '2', '3', '4']会被转换为[1, 2, 3, 4]。例如,输入1 2 3 4,split()后得到['1', '2', '3', '4']。print(name[-2])#从右往坐,-1,-2,-3······count():返回某个字符串在整个字符串中出现的次数,没有就返回0。find(子字符串,开始位置下标,结束位置下标)
2024-12-15 18:10:00
667
原创 python基础知识
Ctrl+/ 添加单行或多行注释Ctrl+F 查找Ctrl+D 复制到下一行Ctrl+X 剪切Ctrl+C 复制Ctrl+V 粘贴。
2024-12-15 17:36:20
981
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅