- 博客(16)
- 收藏
- 关注
原创 栈与逆波兰表达式求值
栈不为空:栈顶运算符优先级 ≥ 当前运算符,则弹出栈顶输出;循环直到栈空 或 栈顶优先级低于当前运算符,再把当前运算符入栈。如果是运算符:连续弹出两个数,注意:先弹出op2,后弹出op1,计算 op1 op op2,计算结果压回栈。4. 遇到右括号 ) :不断弹出栈运算符输出,直到碰到左括号;后缀(逆波兰):运算符写在操作数后面 a b + ,不需要括号。pop() :出栈,默认删除并返回列表最后一个元素(栈顶)示例: [“2”,“1”,“+”,“3”,“*”]peek() :查看栈顶元素,不删除。
2026-09-08 15:10:01
200
原创 用栈实现队列232,用队列实现栈225
双队列方案:每次新元素入栈时,放到辅助队列,再把主队列全部移入辅助队列,交换两个队列身份。主队列的队首就是栈顶元素。232.用栈实现队列。225.用队列实现栈。
2026-09-08 14:20:23
170
原创 递归、链表
3. 交换顺序不能乱:先把node1接上后面的链表,再反转node2指向node1,再让cur指向node2;循环终止条件: cur == None ,循环结束 pre 停在最后一个节点,作为反转后的头节点。输入链表头结点,输出反转之后新链表头结点。链表: 1→2→3→4→5 →5→4→3→2→1。要求:不能修改节点内部值,只能交换节点指针;例: 1‑2‑3‑4 → 2‑1‑4‑3。时间复杂度:O(n),遍历一次链表;先保存后继节点,再反转next指针,避免链表断掉。24:两两交换链表中的节点。
2026-09-04 14:49:15
218
原创 链表算法(203,707)
deleteAtIndex(index):走到index前一个位置,cur.next=cur.next.next。① cur.next.val=6: cur.next = cur.next.next 跳过6。current 指针,操作第 index 位置, current 要走到目标结点的前一个结点。dummy(虚拟头) → 1 → 2 → 6 →3 →4 →5 →6, val=6。②继续遍历,末尾遇到6,同样cur.next=cur.next.next。最后返回 dummy.next,就是新链表头。
2026-09-03 14:55:43
232
原创 数组题:双指针方法
滑动窗口: [left …right] 代表当前窗口,right不断扩大窗口,当窗口总和≥target,移动left缩小窗口,记录最小窗口长度。left指向最左 -4 ,right指向最右 10;res数组从后往前填充大数。slow慢指针:接收fast筛选出来的有效元素,代表新数组下标。示例: target=7,nums=[2,3,1,2,4,3]例如输入 nums = [-4,-1,0,3,10]fast快指针:向前跑,筛选所有不等于val的元素。209:长度最小的子数组。977:有序数组的平方。
2026-09-02 14:32:42
184
原创 数据结构与算法
计算中点推荐写法: mid = left + (right‑left)//2 ,避免直接 (left+right)//2 出现数值溢出。二分查找最核心的就是搜索区间定义,分为「左闭右闭 [left, right] 」和「左闭右开 [left, right) 」两种。,a_n),a_i代表数组的第i个元素。Python中没有原生数组,使用列表(list)模拟数组,一维列表 a=[2,5,3,1,4] ,嵌套列表可以实现二维数组。不断缩小搜索区间,直到区间为空,代表没有找到目标,返回 -1。
2026-09-01 14:08:56
172
原创 使用结构化命令
d 判断是否为目录、 -f 判断是否为普通文件、 -e 判断文件/目录是否存在、 -r 文件可读、 -w 文件可写、 -x 文件可执行。test 是Shell内置专用测试工具,作用是检测数值、字符串、文件/目录状态,返回真假退出码,专门搭配if语句使用。所有条件都不满足,执行else兜底内容。-eq 等于、 -ne 不等、 -gt 大于、 -lt 小于、 -ge 大于等于、 -le 小于等于。test / [] :通用POSIX标准,兼容所有Shell,适合基础文件、数字、字符串判断。
2026-07-17 01:03:49
201
原创 用户管理和文件权限
易错提醒:文件夹缺少 x 权限,哪怕给了读写权限,用户依旧无法cd进入目录,你之前 cd /home/testuser 权限不足,本质就是家目录默认没给普通组开放目录执行权限。-c “备注文字” :修改 /etc/passwd 里用户的注释(GECOS)字段,你的命令 sudo usermod -c “实训” testuser 就是修改用户备注;访问逻辑:用户登录后系统读取自身UID、所属GID,和目标文件记录的所有者UID、所属组GID比对,按权限规则放行或拒绝访问。
2026-07-09 15:59:02
163
原创 shell环境变量
一、全局环境变量、局部环境变量生效范围:仅限当前正在运行的Shell会话,新开子Shell、别的终端窗口都读取不到这个变量创建示例:bashlocal_var=“我是局部变量”bash # 进入子shellecho $local_var # 空白无输出,子进程拿不到父shell的普通局部变量生命周期:关闭当前终端/Shell会话,变量直接销毁,不会自动持久保存创建方式:局部变量搭配 export 命令导出升级为全局变量bashglobal_var=“全局测试内容”
2026-07-09 14:10:35
164
原创 理解shell
bash(Bourne Again Shell):Ubuntu、CentOS系统默认登录Shell,兼容性强、内置功能丰富,支持命令补全、历史命令检索、脚本拓展,图里虚拟机默认终端、手动输入 bash 拉起的进程都是bash。手动敲 bash 命令,父Shell会fork创建新进程,生成子Shell(PID 4192)。判定是否处于子Shell: echo $BASH_SUBSHELL ,返回 0 =父Shell,≥1=嵌套的子Shell(你第一次执行返回0、创建目录后返回1,验证子Shell生效)。
2026-07-08 14:08:13
157
原创 使用vim编辑器和shell命令补充
采用全屏控制台模式,是运维、开发最常用工具,基础功能为纯文本编辑,内置丰富高级功能:文本全局查找、内容批量替换、代码分屏、语法高亮、快捷键批量操作,适合配置文件修改、代码编写。Linux系统提供控制台、图形界面两类文本编辑器,分为三大板块:vim编辑器、nano编辑器、其他拓展编辑器,适配不同操作场景。本模块覆盖 echo 输出、管道符、重定向、文件合并四大核心操作,是Shell文本处理、日志操作的基础。emacs:同时支持控制台、图形双模式,多缓冲区机制,可同时打开、编辑多个文件,拓展插件丰富;
2026-07-06 15:42:11
225
原创 bash shell命令
压缩: gzip test.txt 生成 test.txt.gz,原文件消失。模块2:磁盘与设备管理(mount/umount / df / du)用途:动态刷新界面,实时查看CPU、内存、进程负载,判断系统运行状态。ps aux :查看全部进程,包含用户、CPU、内存、PID、命令。ps -ef :完整格式查看所有进程,PPID父进程ID。用途:一次性列出当前运行进程,静态输出,不会实时刷新。模块1:进程管理(ps / top / kill)kill PID :温和终止进程(默认15信号)
2026-07-03 15:36:49
196
原创 Linux的基础知识和常见命令
文件存储底层:文件系统(ext4/xfs/btrfs)管理磁盘块,通过inode记录文件元数据(大小、权限、时间),文件名存在目录块中,文件名与inode映射分离。交互配套工具:终端模拟器(GNOME Terminal、Xshell、iTerm2等),是输入shell指令的载体。根目录 / 是整个文件系统的起点,所有硬盘、分区、外设都挂载到根目录下的子文件夹,无Windows盘符概念。一切皆文件:普通文本、程序、硬件设备、目录、网络接口都被抽象为文件。/bin / /usr/bin :系统基础命令程序。
2026-07-02 17:09:40
239
原创 【无标题】
虚拟机(VM,Virtual Machine)是通过虚拟化软件(VMware Workstation、VirtualBox),在Windows/macOS真机上虚拟出一台独立电脑,拥有虚拟CPU、内存、硬盘、网卡,和真机完全隔离。Linux仅指系统内核,厂商在内核基础上搭配桌面软件、驱动、工具包,打包成完整发行版(日常说的Ubuntu、CentOS、Deepin都属于Linux发行版)。稳定安全、占用资源低、无版权收费、开发环境适配性强,后端开发、嵌入式、云计算领域几乎全部基于Linux。
2026-06-29 16:51:43
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅