- 博客(17)
- 收藏
- 关注
原创 哈希表相关知识
哈希碰撞(Hash Collision)是计算机科学中的常见术语,指两个不同的输入数据(如字符串、文件等)通过哈希函数计算后,生成相同的哈希值(即“信息摘要”或“指纹”)。哈希冲突(Hash Collision)是哈希表技术中的核心问题,指两个或多个不同的键(key)经过哈希函数计算后,生成相同的哈希值,从而被分配到哈希表的同一存储位置。这种现象的根本原因在于哈希函数的输入域(无限可能的数据组合)远大于输出域(固定长度的哈希值空间),根据鸽巢原理,冲突必然存在。Redis的字典结构采用此方法。
2025-09-10 23:30:33
825
原创 删除字符中的所有相邻重复项,逆波兰表达式求值
通过字典op_map,将运算符字符串('+'、''、'*'、'/')与对应的运算函数(add、sub、mul、div)关联,方便后续根据运算符快速找到要执行的函数。如果是运算符,从栈中弹出两个操作数,先弹出的是右操作数op2,后弹出的是左操作数op1,因为栈是“后进先出”,最近入栈的操作数在更上层。处理相邻重复字符,当res不为空,且res最后一个元素(即最近加入的字符)与当前遍历到的字符item相同时,说明出现了相邻重复字符。初始化存储容器,创建一个空列表res,用于临时存储处理后的字符。
2025-09-08 10:50:33
264
原创 栈和队列知识
因为stack_in是“后进先出”存储的,循环将stack_in中的元素逐个弹出(stack_in.pop()),再加入stack_out(stack_out.append(...))。这样一来,stack_in中先入队的元素会被放到stack_out的栈顶(符合队列“先进先出”,先入队的元素要先出队)。stack_out专门负责“出队”和“查看队首”操作:当需要出队或查看队首时,从stack_out中获取元素(此时stack_out里的元素顺序已经被调整为符合队列“先进先出”的顺序)。
2025-09-05 11:44:14
374
原创 递归、链表
pre:表示当前节点的前驱节点(即反转后当前节点的“下一个”节点),初始时为None(因为原链表头节点反转后会成为尾节点,尾节点的next为None)。移动current指针到下一组的前驱位置(即交换后两个节点的第二个节点,current=current.next.next),为下一次交换做准备。当循环结束时,cur为None,此时pre指向的是原链表的尾节点,而经过反转后,这个尾节点就变成了新链表的头节点,所以返回pre。更新pre为当前的cur,因为下一个节点反转时,当前cur会成为下一个节点的前驱。
2025-09-04 11:04:21
394
原创 链表理论基础
如果满足,执行current.next=current.next.next:跳过current.next节点(相当于“删除”它)。如果满足,执行current.next=current.next.next:跳过current.next节点(相当于“删除”它)。returndummy_head.next:因为dummy_head是“虚拟头节点”,它的next才是真正的链表头节点。returndummy_head.next:因为dummy_head是“虚拟头节点”,它的next才是真正的链表头节点。
2025-09-03 16:46:53
141
原创 有序数组的平方&长度最小的子数组
right - left + 1 计算的是当前满足条件的子数组的长度,将其与之前记录的最短长度 min_len 比较,取较小值。比较左指针和右指针所指元素的平方大小:如果左指针元素的平方小于右指针元素的平方,就将右指针元素的平方放入结果数组的 i 位置,然后右指针左移( r -= 1 )。left = 0 和 right = 0 :初始化两个指针, left 和 right 都指向列表的起始位置,这两个指针用于定义子数组的左右边界。否则,返回找到的最短子数组的长度 min_len。
2025-09-02 11:11:45
365
原创 数据结构概念与数组的基本知识
固定大小(静态数组):多数编程语言中,数组初始化时需指定长度,后续无法动态扩容(动态数组如Java的ArrayList、Python的list本质是对静态数组的封装,通过重新分配内存实现“动态”效果)。多维数组:以二维数组最常见(如矩阵),本质是“数组的数组”,如 int[][] matrix = {{1,2},{3,4}} ,内存仍按一维连续存储(行优先或列优先)。索引访问:通过非负整数索引(通常从0开始)直接定位元素,访问时间复杂度为 O(1)(常数时间),是数组最核心的优势。
2025-09-01 11:38:26
254
原创 第九次作业
2.为三个用户分别创建 download,Picture, Document 三个文件夹。使用 for 循环检查当前目录下有哪些是可执行文件, 有哪些是可写文件。• 检查该用户名是否存在, 如果存在返回“该用户已存在” , 并输。1.为 Tom, Jerry, Spike 创建新用户账户。• 如果不存在, 检查 /home 下是否有该用户的文件夹。• 如果有该用户名称的文件夹, 输出文件夹下内容。• 如果没有该用户文件夹, 为该用户名创建新用户。• 每一步都需要返回提示信息如“该用户已存在”
2025-07-11 11:21:14
207
原创 第八次作业
1. 创建一个新用户, 指定用户名缩写为其主目录名, 并指定用户的登录shell为 dash shell。2. 修改用户的登录名、 密码、 默认的登录shell、 /etc/passwd 文件的备注字段。3. 查看 /etc/skel 下的文件, 根据前一章的内容, 解释目录下的文件是做什么的。1. 查看/etc/passwd 文件, 并对某用户账户的字段进行解释。4. 用 –m 参数创建一个新用户账户, 检查新用户的 HOME 目录。2. 查看/etc/shadow文件, 并对某用户账户的字段进行解释。
2025-07-10 12:19:08
112
原创 Linux环境变量
在子 shell 中设置局部变量, 退出子 shell 后在父shell 中查看。4. 在子 shell 中使用 export 将赋新值的变量导出至全局并查看。5. 进入子 shell, 在子 shell 中查看 $PWD 变量。1. 进入子 shell 中查看父 shell 中设置的全局环境变量。在父 shell 中设置局部变量, 进入子 shell 中查看。3. 退出子 shell, 查看父 shell 中的该变量值。5. 退出子shell, 查看父 shell 中的该变量值。
2025-07-09 11:55:46
312
空空如也
Xshell虚拟机连接不上
2025-07-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅