- 博客(16)
- 收藏
- 关注
原创 理解栈与队列以及栈的两道经典应用
删除字符串中的所有相邻重复项就是栈消除思想很典型的体现,当字符串出现相邻相同字符,删除之后,原本分隔开的字符又会彼此相邻,有可能产生新的重复字符。我们遍历字符串的每一个字符,把字符不断压入栈结构,每当当前遍历字符和栈顶存储的字符一致,就将栈顶元素弹出,代表完成一次相邻字符的消除,如果二者不相等,就把当前字符压入栈中,完整遍历完字符串之后,栈中剩下的字符拼接在一起,就是消除全部相邻重复之后得到的结果。栈遵循后进先出的规则,最后存入的数据会最先被取出,数据只能在容器的同一侧完成入栈和出栈操作。
2026-09-08 15:22:48
183
原创 队列模拟栈:理解两种数据结构的差异
每当我们压入一个新元素,先把它正常加到队列尾部,接着记录下添加之前队列的元素数量,把队列里原本就存在的旧元素全部出队,再重新追加到队列末尾。这道题就是改造队列的存取顺序,用循环调换元素位置,强行把先进先出的队列,包装出后进先出的栈效果。在学习栈与队列的时候,225这道用队列实现栈的题目很适合帮我们看清两种容器本质上的区别。栈遵循后进先出,最后放进去的数据最先拿出来,而队列是先进先出,先进入的元素要最先离开,二者的输出逻辑完全相反,想要只用队列完成栈的全部行为,就不能直接使用队列原生的顺序。
2026-09-07 16:01:06
167
原创 递归思想与两道链表习题学习小结
迭代实现沿用了链表题非常经典的虚拟头结点技巧,创建一个dummy节点放在链表头部之前,设置pre指针作为每一组待交换节点的前驱,只要后面还存在两个节点,我们就依次完成三步指针调整,实现两个相邻节点位置的互换,交换完成之后将pre移动到本组交换完成之后靠后的那个节点,开启下一轮循环,借助虚拟头结点,头部两个节点的交换逻辑和链表中间节点的交换逻辑得到统一,不需要编写额外的分支代码处理边界情况。对比两种方案,迭代拥有O(1)的空间复杂度,不存在栈溢出隐患,而递归写法代码更加简短,代价是占用系统栈的存储空间。
2026-09-03 15:57:27
224
原创 链表基础与简单链表习题学习小结
链表是和数组并列的最基础的线性数据结构,和依靠连续内存存储元素的数组不一样,链表的每一个数据都存放在独立的节点当中,节点除了保存本身的值,还带有指向下一个节点的指针,依靠指针把所有节点串联起来。做题的时候经常会用到虚拟头结点这个小技巧,人为创造一个不存放有效数据的节点放在真正的头节点之前,这样一来不管是在链表头部做插入还是删除,都不需要单独写一段特殊逻辑去修改头指针,所有位置的操作都可以统一为先找到前驱节点,再调整指针,能够简化大量边界条件的判断,减少空指针、头节点丢失这类常见错误。
2026-09-02 15:20:08
186
原创 数组双指针算法学习小结
双指针通过同时维护两个位置标记,只让每个元素被访问很少的次数,就可以把不少数组题的时间复杂度优化到O(n),这也让我意识到做题不能只求写出可以跑通的代码,更要思考算法的效率上限。交换式双指针更是提供了另一种思路,把要删除的元素挪到数组后端,不用大量拷贝赋值,当需要删掉的数字很多的时候,整体运行效率会更高。因为数组全部都是正整数,子数组的和会随着元素增加单调变化,我们才可以动态调节窗口的左右边界,扩大窗口累加数值,满足条件之后再不断收缩窗口寻找更短的区间。
2026-09-01 16:07:16
158
原创 读懂二分查找:思路简单,细节才是重点
当left和right相等的时候,区间内仍然存在一个需要判断的有效元素,如果误写成 left < right ,循环会直接跳过这最后一个元素,明明目标值就在这个位置,程序却直接跳出循环判定查找失败,这也是课程演示里错误案例发生的根源。二分查找则完全不一样,它有一个硬性前提,待查找的数组必须是有序排列的,正是依托有序这个条件,我们不需要逐个比对,每次拿区间中间位置的值和目标值对比,直接舍弃一半不可能存在答案的数据,把查找范围不断对半缩小,换来对数级别的时间复杂度,数据量越大,这种效率优势就越突出。
2026-08-31 16:33:44
244
原创 Shell结构化命令学习实操总结
最开始接触if-then语句时发现它和其他编程语言的if逻辑有明显区别,bash的if不会直接判断等式真假,而是执行if后跟随的命令,依靠命令退出状态码0来判定条件成立,同时还能简写为一行写法,用分号分隔then,简单几条代码就能直观感受到这种独特的运行机制,搭配if-then-else可以处理二分支场景,elif则能连续实现多分支判断,不用重复嵌套多层if,代码可读性会高很多。文件检测能够判断路径是否存在、是否为目录、读写执行权限、文件新旧等,日常运维判断文件状态十分实用。
2026-07-10 15:23:54
185
原创 Linux Shell脚本基础入门实操总结
脚本里搭配echo命令可以自定义输出提示文字,echo -n还能让文字和后续命令的输出合并在同一行展示,优化终端输出的可读性,运行脚本时能直观看到自定义提示和系统命令输出结合后的效果。最开始接触多条命令同时执行时,学会了两种拼接方式,分号分隔可以让date和who两条命令顺序执行,两条命令的输出内容都会完整打印在终端上,而管道符则会把前一条命令的输出作为后一条命令的输入,只会展示最终处理后的结果,两种方式适用场景完全不同,日常简单批量执行用分号,需要数据传递处理就用管道,上手实操后很容易分清两者的区别。
2026-07-09 16:01:04
317
原创 Linux用户管理与文件权限实操学习总结
文件权限通过ls -l指令查看,首字符区分文件、目录、软链接、硬件设备,后续三段rwx分别对应文件所有者、所属组、其他全部用户的读写执行权限,r代表读取、w代表写入、x代表执行,无权限则标记为横杠,权限可以换算成八进制数字,r为4、w为2、x为1,组合计算得出0-7的权限数值。搭建多人共享目录的核心思路是创建公共用户组,把所有需要协作的用户加入该组,使用chown统一目录文件的属组,再通过chmod放开组内读写执行权限,限制外部其他用户访问,同组人员就能自由读写共享目录内所有内容。
2026-07-08 15:56:19
187
原创 Linux环境变量实操学习记录
环境变量本质就是系统存储信息的键值对,采用变量名等于值的格式,bash shell会依靠这类数据保存终端会话、用户信息和系统参数,不管是程序还是脚本都能快速读取里面的内容,系统自带的环境变量统一使用大写字母命名,我们自己创建的变量尽量用小写,防止不小心覆盖系统自带变量引发命令异常,像HOME、PATH、PWD都是系统默认自带的常用变量,分别对应用户家目录、命令检索路径、当前所在文件夹,还有RANDOM、UID这类bash独有的扩展变量,能实现生成随机数字、查看用户ID这类功能。
2026-07-07 16:00:20
186
原创 Linux Shell全面学习实操总结
bin/bash,这个特殊标识用来告诉系统使用bash解释器运行脚本,换成#!Shell支持多种运行模式,日常最常用的后台模式只需要在命令末尾添加&符号,程序就会放到后台执行,不会占用当前终端输入权限,执行sleep 60 &这类测试命令后,jobs可以查看所有后台任务,ps -f能够查看系统完整进程列表,后台任务运行结束后按下回车,终端会自动打印任务完成提示,把带括号的进程列表放到后台运行,还能避免子Shell的输入输出绑定当前终端,适合执行耗时较长的批量操作。可以直接执行上一条命令,!
2026-07-06 15:45:11
179
原创 Linux下vim编辑器与基础shell命令实操学习记录
整套实操练习下来,从最基础的vim文件新建、编辑、查找替换,到echo、管道符、重定向、文件合并这些shell命令全部亲手操作一遍,过程里踩了不少输入格式、模式切换、符号使用的小问题,也正好对应弄懂了每个知识点背后的使用规则,把理论内容和终端实操对应起来,整理完整操作截图记录每一步运行结果,搭建起属于自己的Linux基础命令知识框架,也清楚了每条命令的基础用途和常用参数,后续再使用vim和shell基础指令时就能更熟练、更少出错。
2026-07-03 16:10:12
178
原创 Linux基础命令实操练习记录
文本处理是这次练习里出错最多的部分,一开始编辑器名称、文件名反复输错,改用nano新建数字文本后,分别执行默认字符排序、纯数字升序、数字倒序三组sort指令,能清晰看到两种排序逻辑的差异。打开top面板观察实时资源占用,切换内存显示单位、按内存大小排序,只查看自己启动的进程,最后尝试通过PID号终止进程,直观区分静态快照与动态监控两种查看进程的方式。这次在虚拟机里完整实操了Linux下进程、磁盘、文本处理与文件压缩相关命令,操作过程里踩了不少输入符号、文件名拼写的小问题,慢慢调整后才顺利跑通全部指令。
2026-07-02 16:47:33
157
原创 Linux基础命令实操学习总结
查看目录内容使用ls命令,无参数直接按字母排序展示当前目录文件,系统依靠不同颜色区分文件类型,白色普通文件、蓝色目录、青色可执行文件、红色压缩包,加上-a参数ls -a可以显示以.开头的隐藏配置文件,-l参数ls -l展示文件详细信息,包含文件类型、读写权限、硬链接数、归属用户、大小、修改时间,多个参数能够组合使用ls -al,-R参数ls -R递归列出所有子目录内部文件,ls --help可以查看该命令全部可选参数,查找特定文件可以搭配通配符,?匹配单个字符、*匹配任意长度字符、[]限定字符范围、!
2026-07-02 12:27:39
206
原创 从零上手Xshell远程连接Linux虚拟机,完整实操踩坑记录与文件传输方法
【代码】从零上手Xshell远程连接Linux虚拟机,完整实操踩坑记录与文件传输方法。
2026-06-30 15:35:23
200
原创 从零起步,在小学期深耕Linux与Shell编程
课堂上老师从Linux的起源慢慢讲起,1991年一名在校大学生编写出初代内核,无偿公开源代码,靠着全球开发者共同完善,一步步发展成如今遍布服务器、智能设备的系统,开源自由的内核特质让我对它生出几分好奇,也慢慢理解市面上CentOS、Ubuntu这些发行版的区别,银行、医疗行业偏爱稳定免费的CentOS,创业企业大多选用轻量化的Ubuntu,不同场景对应不同系统,背后都是实际业务需求的考量。
2026-06-29 16:59:24
325
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅