- 博客(39)
- 收藏
- 关注
原创 LeetCode算法“两数之和” 链表+模拟+迭代
题目要求将两个逆序存储数字的链表相加,并返回逆序结果链表。主要思路是逐位相加并处理进位:从链表头部(个位)开始,依次计算当前位之和(包括进位),将个位存入新节点,十位作为进位传递到下一位。循环直到两个链表都遍历完且无进位为止。时间复杂度O(max(m,n)),空间复杂度O(max(m,n))。示例:输入[2,4,3]和[5,6,4](即342+465),输出[7,0,8](即807)。
2025-09-27 22:42:15
233
原创 LeetCode算法“无重复字符的最长子串”哈希表+滑动窗口+贪心
本文介绍了一种使用滑动窗口算法结合哈希表高效求解"最长无重复字符子串"问题的方法。通过维护左右指针动态调整窗口范围,利用哈希表快速判断字符重复性,确保时间复杂度为O(n)。详细步骤包括算法原理、示例演示、代码实现及边界处理,适用于各类字符串场景。该方案空间复杂度为O(1),能正确处理空串、全重复字符等特殊情况。
2025-09-27 22:34:35
1944
原创 uthash.h库源码
UTHash 是一个轻量级哈希表库,提供动态键值存储功能。它支持多种键类型(整数、字符串、指针等),具有自动扩容机制,当桶链过长时会触发扩容以维持高效查找。库采用头文件实现,无需额外编译,使用简单灵活。主要特性包括:1) 支持插入、查找、删除操作;2) 提供遍历接口;3) 包含布隆过滤器优化;4) 可自定义哈希函数。使用时需在结构体中添加UT_hash_handle字段,通过宏实现各种操作。该库适用于C语言项目,特别适合需要快速实现哈希表功能的场景。
2025-09-26 17:44:02
212
原创 LeetCode算法“两数之和”从暴力枚举到哈希表双重进阶
摘要 本文介绍了解决"两数之和"问题的两种算法:暴力枚举法和哈希表法。暴力枚举法通过双重循环遍历数组查找满足条件的元素对,时间复杂度为O(n²)。哈希表法则利用哈希表存储元素值和索引,通过一次遍历实现查找,时间复杂度优化至O(n)。文章详细阐述了哈希表的实现原理,包括哈希函数设计、链地址法处理冲突、插入和查询操作等,并提供了完整的C语言实现代码。两种方法均能正确解决问题,但哈希表法在效率上有明显优势,适合处理大规模数据。
2025-09-21 16:59:14
363
原创 python爬虫(请求+解析+案例)
本文介绍了Python中requests模块和正则表达式的基本用法。requests部分展示了GET和POST请求的实现,包括URL拼接、请求头设置、参数传递和JSON解析。正则表达式部分详细讲解了15种常用元字符的功能和代码示例,如字符匹配、空白符、数字、边界等,并演示了贪婪匹配和惰性匹配的区别。最后介绍了re模块的findall和finditer方法,展示了如何提取字符串中的数字模式。整体内容涵盖了网络请求和文本处理的基础操作,适合入门学习。
2025-09-21 12:36:33
1500
原创 Nginx+Gunicorn云部署(全栈部署云服务器)
本文将介绍在Ubuntu 24.04系统上部署Vue3+Django5.0项目的完整流程,包括服务器初始化、MySQL安装配置、Django后端部署、Vue3前端部署及Nginx整合配置。文章详细说明了从系统准备、数据库创建、Python虚拟环境搭建、Gunicorn服务配置,到前端项目构建和Nginx反向代理的每个步骤,并提供了关键配置示例和命令说明,帮助开发者快速搭建完整的Web应用生产环境。
2025-09-21 12:29:40
995
原创 Docker基础部署和一键启动
本文介绍了Docker环境的配置及基本操作流程。主要内容包括:下载Docker镜像(nginx:1.26.0)、运行容器并修改默认页面内容、使用commit命令保存容器状态为新镜像、通过目录挂载实现数据持久化等关键操作。重点演示了如何通过docker exec进入容器修改文件、使用docker save/load保存和导入镜像、利用-v参数实现宿主机与容器间的目录映射,确保数据在容器关闭后仍可保留。这些操作形成了一套完整的Docker使用流程,帮助用户快速掌握容器化应用部署与管理的基本方法。
2025-08-11 10:55:49
757
原创 MySQL基础以及Express操控MySQL
本文介绍了MySQL数据库的基本操作和SQL语句使用指南。主要内容包括:1)数据库和数据表的创建方法;2)SQL语言的四大核心操作(查询、插入、更新、删除)的语法和示例;3)WHERE子句、AND/OR运算符的使用;4)MySQL安全模式的概念及其对数据修改操作的限制。文章通过具体示例演示了SELECT、INSERT、UPDATE、DELETE等语句的实际应用,并对比了安全模式和非安全模式下数据修改操作的差异,为数据库初学者提供了实用的操作参考。
2025-08-11 10:46:15
673
原创 Express后端开发从身份认证到接口开发到数据库
本文介绍了Web开发中的两种主要模式:服务端渲染(SSR)和前后端分离开发,以及身份认证机制。服务端渲染适合展示类网站,利于SEO但占用服务器资源;前后端分离开发体验好但不利于SEO。身份认证方面,推荐服务端渲染使用Session认证,前后端分离使用JWT认证。文章还分析了Cookie的安全性问题,并提供了在Express中使用Session认证的代码示例。最后介绍了JWT认证机制及其优势,给出了页面路由跳转的实现方法。整体内容涵盖了Web开发的核心技术选择和实践方案。
2025-08-11 10:34:49
1331
原创 爬虫的云服务器代理
代理是,客户端(如 Python 脚本)发请求时,不直接连目标服务器,先把请求给代理服务器,代理再转发给目标,目标响应也经代理回传给客户端。这样做能(目标服务器看到的是代理 IP)、(如公司 / 学校网络屏蔽部分站点,代理可绕过)、(提升重复请求效率)。
2025-08-11 10:15:06
954
原创 python爬虫方法和示例以及应对反爬
本文介绍了Python爬虫的基础实现方法,包括使用urllib库获取网页源码、下载文件、应对反爬措施等。主要内容有:1)使用urlopen获取网页源码并解码输出;2)urllib的6种常用方法(read/readline/getcode等);3)下载网页、图片、视频文件的方法;4)通过定制请求头(User-Agent)绕过基础反爬;5)使用quote和urlencode进行URL编码转换;6)实现百度翻译的POST请求爬取,包括参数编码和JSON数据处理。文章提供了完整的代码示例,适合爬虫初学者学习基础操作
2025-08-11 09:59:55
1761
原创 JavaScript对象的深度拷贝
情况一:基本数据类型,直接赋值情况二:复杂数据类型(数组和对象)先声明空容器,再递归调用遍历赋值情况三:正则表达式,日期对象等函数递归地复制对象及其嵌套属性,确保原始对象和克隆对象完全独立。它处理了多种数据类型和循环引用的情况。
2025-07-09 19:23:14
380
原创 前端交互自定义封装类:“双回调自定义信息弹窗”
本文介绍了一个自定义弹窗类NewMsgBox的开发过程,旨在替代原生alert()功能,提供更灵活的交互。该弹窗包含自定义标题、内容、确认/取消按钮及对应回调函数。开发步骤包括:1)构建DOM结构(主容器、头部、主体、尾部、遮罩层);2)添加CSS样式实现居中显示和视觉美化;3)通过JavaScript类实现功能,包括构造函数参数处理、节点创建、事件绑定和窗口开关控制。最终封装为独立CSS和JS文件,提供完整调用示例和使用说明。该组件支持通过网盘下载使用,具有防止命名冲突的样式前缀,是作者首个前端类开发
2025-07-09 12:58:57
2845
1
原创 制作多样式桌面弹窗MessageBox详细用法
MessageBox 是 Windows API 中的一个函数,用于显示一个模态对话框,该对话框包含一个系统图标、一组按钮和一条简短的特定消息。各参数详细含义含义:指定消息框的父窗口句柄。如果此参数为 NULL,则消息框没有父窗口。效果及示例:当 hWnd 为 NULL 时,消息框会独立于任何窗口显示。当指定一个有效的窗口句柄时,消息框会与该窗口关联,并且会在该窗口的上方居中显示。在这个例子中,当用户点击窗口的客户区时,会弹出一个与该窗口关联的消息框。含义:指定要在消息框中显示的文本内容。
2025-04-29 00:20:07
1189
原创 关于windows API 的键鼠可控可测
GetAsyncKeyState 是 Windows API 中的一个函数,用于判断某个虚拟键是否被按下。GetAsyncKeyState(VK_ESCAPE) 专门用于检测 Esc 键的状态。下面为你详细介绍其用法:函数原型cppint vKey参数vKey:虚拟键码,对于 Esc 键,使用 VK_ESCAPE 作为参数。返回值返回一个 SHORT 类型的值,其含义如下:最高位(第 15 位)为 1 时,表示该键当前处于按下状态;为 0 时,表示该键当前处于释放状态。
2025-04-29 00:13:51
1512
原创 C语言队列和循环队列以及简化自制版本
包含标准输入输出库,用于后续的printf函数调用,实现输出功能。:包含标准库,这里虽代码中未直接使用stdlib.h里的函数,但为后续可能的动态内存分配等操作做准备。:定义了一个宏MAX_SIZE,其值为 100,用于表示队列的最大容量。2. 队列结构体定义int front;int rear;} Queue;定义了一个名为Queue:一个大小为MAX_SIZE的整数数组,用于存储队列中的元素。int front:表示队列的队首位置,即第一个元素的索引。int rear。
2025-04-20 16:27:12
1159
原创 关于C语言的模拟物理模型
define RESTITUTION_COEFFICIENT 0.8 // 恢复系数,0 <= e <= 1,0为完全非弹性,1为完全弹性。if (distance < 100) { // 两个小球半径之和为100。// 计算相对速度在法线方向和切线方向的分量。// 计算碰撞法线方向的单位向量。// 检测并处理碰撞。void peng()//碰撞影响一定放到位置更新之后。void speed()//速度变化。void move()//移动。void Fa()//受力。// 检测并处理小球碰撞。
2025-04-17 23:21:39
1022
原创 C指针文字迁跃/keybd_event函数/kbhit缓冲区检测
结束批量绘制,并执行未完成的绘制任务。写在循环内,构图后,延迟前。bool timer(int ms, int id)//时间戳。void CREATE_SNOW(){生成目标。void DRAW_SNOW(){画出目标。void snowmove(){目标移动。
2025-04-16 23:59:31
410
原创 C语言 栈 的 描述 和 详解
栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出(Last In First Out,LIFO)的原则存储数据,就像一个只能从顶部取放物品的箱子,最后放入的物品会最先被取出。
2025-04-14 17:54:24
1171
原创 关于C使用Windows API获取系统管理员权限和对文本属性的操作,以及windows API的核心操作
【代码】关于C使用Windows API获取系统管理员权限和对文本属性的操作。
2025-04-13 03:06:17
878
原创 洛谷普及B3754 [信息与未来 2019] 鸡兔同笼
本题通过引入三脚猫这一新的变量来赋予本题更大的灵活性,但是基础逻辑并未有实质性改变,总体来说,分析的时候很清晰,思路抒清,会很舒服。难度偏易。某种意义上来说,本题更偏向是一道数学题。为什么这样说,因为甚至使用线性规划都能写。
2025-04-11 23:35:58
643
原创 洛谷普及B3694 数列离散化
其中前面两个是利于读者理解的冒泡排序,但实际使用应使用后两个(快速排序)排序以此来满足该题的时间问题。// 按 num 字段排序i <= n;j++) {// 按 id 字段排序i <= n;j++) {/ 按 num 字段比较的函数,用于 qsortreturn -1;return 1;return 0;// 按 id 字段比较的函数,用于 qsortreturn -1;return 1;
2025-04-10 23:11:47
314
原创 洛谷普及B3691 [语言月赛202212] 狠狠地切割(Easy Version)
关于切割,我有以下思路,如果切割的位置不是某段的端点,那么本次切割就会产生一个额外的一段,否则不然,所以切割的位置决定了本次切割是 “ 有效切割 ” 还是 “ 无效切割 ”。不妨设定一个结构体,结构体元素如下。
2025-04-09 23:38:43
1256
原创 洛谷普及B3621 枚举元组
同样是枚举,我觉得可以温柔一点的枚举,不要太暴力!题目评论区下面都是暴力枚举哈,有点意思,我觉得能优化的地方最好优化一下,(纯素养 非 强迫症)以上就是本人对于该题的全部思路,该题模块化解决子问题时都是挺简单的模块,整体难度一般。我测试了,该代码的测试上限在n=6,k=6;满足本题n=5;k=4;看似很接近,实际上差的还很远生成的元组内数字数量和满足count = n * k^n;排列count(6,6) = 6 * 6^6 =279936 ≈ 28万.
2025-04-06 02:46:55
1303
原创 洛谷普及P1008 [NOIP 1998 普及组] 三连击
你肯定会发现,直接通过比例关系生成的后两个三位数a2,a3,大多数都不满足三个数字互异,此时我们需要一些函数来筛选。函数代码解释。
2025-04-05 02:28:10
1305
原创 洛谷普及B3628 机器猫斗恶龙
从后向前判断-300 - > -200 这两步需要至少 501的血量前面补给400,则400之前至少有101的血量,这样来凑够501前面又要补给200,而200>101 则无论200之前有多少血量,只要能活着到200就足够所以该步要清零,也就是说只要有一滴血能到达200补给就行,再往前推,-100,则需要101,前面又遇到400>101,则再次清零变成一滴血,
2025-04-03 00:17:18
1162
原创 洛谷普及B2143进制转换
对于经常倒序输出的函数,并非一定要用多余的操作来将之逆序,可以试着直接倒着储存,记得返回具体的下标位置,和字符串结束符或者结束标志,转变角度有奇效。
2025-03-30 14:13:35
260
原创 洛谷普及B2141确定进制
在函数中设下保护,防止转换的数之中存在大于进制的数,并且整体放到main中的if中。总体细节上对应题目要求还有些不足,需要使用long long来替换int,以备使用进制较长的情况// 将字符串表示的数字转换为指定进制下的十进制值int l = 0;i < l;return r;// 寻找满足 p × q = r 的最小进制b <= 16;
2025-03-30 13:37:12
675
原创 洛谷普及B2139区间内的真素数
且末尾没有逗号。这就意味着,无法直接遍历判断输出不储存(因为刚开始图方便就是这样写的,代码如下)那这样的话,我们不储存的情况无法判断当前输出的数是否是最后一个,也就无法准确的控制逗号的输出,那就稍微麻烦一点把遍历判断结果先储存,再输出,就像下述这样。关于代码优化的话,这道题应该没啥简便算法,基本上都是要暴力枚举,后来我也看了网站上的各种题解,确实基本上也都是暴力枚举,个别的转化为字符串操作的解法也没啥必要,相比之下也没有简化,所以在本篇文章中该题无优化。
2025-03-30 00:23:39
465
原创 洛谷普及B2105矩阵乘法
后来看了几种解法,但都是换汤不换药,基本逻辑都是相同的矩阵乘法通项公式。如果非要简化的话,可以优化一点细节,比如矩阵乘法部分,C矩阵赋值的时候,省去he变量,可以直接对C[y][x]赋值。还有就是数组可以直接确定为行和列101,因为题中设定了范围。
2025-03-28 20:40:28
500
原创 洛谷普及B2084质因数分解
看到最后简化的代码的简单度,真是有点emm自嘲了,首先是因为它是个普及题,然后就往复杂一点的思考,其次从这道题我也深刻意识到一个只强化编程能力远远不够,提升数学逻辑思维才是优化解决问题的根本。
2025-03-28 18:03:33
355
基于visual studio + easyx.h 开发的 2D角色 扮演运行框架,结合文章代码可测试新增玩法
2025-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅