自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 软考数据库

逻辑独立性:数据的逻辑结构发生变化后,用户程序也可以不修改,但是为了保证应用程序能够正确执行,需要修改外模式和概念模式之间的映像。物理独立性:当数据的物理结构发生改变后,应用程序不用改变,但是为了保证应用程序能够正确执行,需要修改概念模式和内模式之间的映像。当前和未来应用的数据要求,数据处理需求,产物有:数据流图,数据字典,需求说明书。主属性:组成候选码的属性就是主属性,其他的就是非主属性,学号是主属性。可以代入,看入度是否为0,以当前属性为起点,是否能推出其他所有的属性。

2026-03-21 22:41:50 94

原创 计算机操作系统

主存与外存可以看做一个虚拟的存储结构,将外存一些需要的数据调入内存中去,如果数据不在内存的话会产生缺页中断,停下来之后再将数据从外存调入内存,调用的过程有不同的方式,主要是页式存储。系统不可能发生死锁的最小资源数:(w-1)*m+1 w是每个进程需要的资源,m是进程数。主要考点就是基地址,段长,给出几个选项,看每个选项是否超过段长。死锁四大条件:互斥,保持和等待,不剥夺,环路等待。设备无关程序:设备名解析,阻塞进程,分配缓冲区。算法:最优,随机,先进先出,LRU。进程状态:等待,就续,运行。

2026-01-25 23:03:05 419

原创 计算机组成原理

存储单元是连续的,就是说一个连续的内存地址比如:A0000H~CFFFFH, 存储单元个数=CFFFF-A0000+1 = 30000,这里是16进制,转换:3*16^4。指令译码器ID:指令是0,1字符串,通过指令译码器,然后去控制特定的软硬件来完成这些功能。RISC:精简,指令数量少,操作寄存器,单周期,少寻址,多通用寄存器,流水线。空间局部性:刚被访问的内容,临近的空间很快被访问---线性结构存储,比如数组。CISC:复杂,指令数量多,频率差别大,多导址。运算器:顾名思义,它是用来作运算的,

2026-01-24 12:28:30 298

原创 leetcode单词搜索

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

2026-01-10 21:52:46 145

原创 leetcode热题括号生成

3.同时在迭代中要保证右括号的个数不能大于左括号的个数,如果右括号的个数小于左括号的个数,既能插入左括号又能插入右括号。1.递归过程中变的是填充了多少个左括号和填充了多少个右括号,所以我们要把填充了左括号和右括号的个数作为参数。2.在迭代中我们要保证左括号的个数不能大于n,只要不大于n,就又可以插入左括号或右括号了。代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。4.结束递归的条件就是右括号的个数 == n。

2026-01-10 11:25:21 228

原创 leetcode热题组合总和

这类问题的关键就是排列组合问题,所有可能都要遍历到,维护一个数组装所有组合成target的数组,再维护一个数组临时装组合target的数,每一次递归完返回要么到了数组的最后一个元素就要往上层返回了,要么说明已经找到了解,把临时数组放进结果数组,所以就要回溯上一层让临时数组移除掉最后一个数(因为这如果不移除就是一个重复的解了),每一个数字每次递归可以选也可以不选。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。如果至少一个数字的被选数量不同,则两种组合是不同的。7 也是一个候选, 7 = 7。

2026-01-08 22:53:51 183

原创 电话号码的字母组合

递归中对每个按键可取字母进行遍历(穷举的过程),遍历一轮要把上轮已拼接好的删除掉,穷举拼接上新的字符。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。的字符串,返回所有它能表示的字母组合。定义字符和字母的映射 '2' -> "abc"用stringBuilder拼接递归中字母。中止条件就是当前索引 == 字符串的长度。

2026-01-07 23:02:30 259

原创 leetcode热题子集

返回该数组所有可能的子集(幂集)。

2025-12-29 23:02:18 227

原创 校验码概述

把接收到的CRC码用约定的生成多项式G(X)去除(模二除法),如果正确,则余数为0;CRC的编码方法是:在k位信息码之后拼接r位校验码。应用CRC码的关键是如何从k位信息位简便地得到r位校验码,以及如何从K+r位信息码判断是否出错。奇偶校验的编码方法是:由苦于位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码;有效信息是0:那就再加上一个二进制1,01一起发送过来,如果接收到的1不是奇数位,则有误。奇偶校验:可检查1位(奇数位)的错误,不可纠错。海明校验码既可检错也可纠错。

2025-12-28 16:35:04 194

原创 leetcode热题全排列

给定一个不含重复数字的数组。

2025-12-28 15:04:08 212

原创 实现 Trie (前缀树)

关键字:26位长的children数组,每个字符与'a'相减,然后放在对应索引上作为children,查找的时候是插入的逆过程,每个字符与'a'相减,得出索引,看索引是否有值。是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。(发音类似 "try")或者说。

2025-12-27 23:20:53 229

原创 详解有向图

打个生活的比方:先穿内裤再穿裤子,先穿打底再穿外套,先穿衣服再戴帽子,是约定俗成的。内裤外穿、光着身子戴帽子等,都会有点奇怪。我们遵循穿衣的一条条先后规则,用一串 顺序行为,把衣服一件件穿上。这种存在先后关系的依赖,我们叫有向图,下面用个图说明一下。

2025-12-27 22:18:05 254

原创 leetcode课程表

解此题的关键把此题转化有向图,那些不依赖其他课程的入度就为0,从入度为0的入手,依次减少依赖此入度为0课程的入度,如果此依赖课程的入度也为0了,就看后面的依赖,直到所有的课程入度都为0。在选修某些课程之前需要一些先修课程。请你判断是否可能完成所有课程的学习?,表示如果要学习课程。

2025-12-27 22:03:44 213

原创 leetcode热题腐烂的橘子

直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。的新鲜橘子都会腐烂。

2025-12-27 19:16:39 253

原创 leetcode热题岛屿数量

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。

2025-12-25 23:17:57 243

原创 二叉树中的最大路径和

关键点:设置全局变量记录最大值,递归调用,在递归里做两件事,递归计算左右子节点的最大贡献值,根据返回的最大贡献值返回当前节点和左/右节点(谁大取谁, 如果都小于0,则取0)的和记为当前节点的最大贡献值计算出一个最大路径和,根节点+左最大贡献值+右最大贡献值,和全局最大路径取大者。被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。

2025-12-22 22:23:37 329

原创 二叉树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(2.如果左子树找到,右子树未找到(直接写成右子树为null,因为走到这里左子树不为null了)1.如果左子树未找到,返回了null,则返回右子树找的结果(不管是否为Null)3.走到这里,最后左右子树都找到了p,q,那么他们的root节点就是最近公共祖先。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。的最近公共祖先是节点。

2025-12-15 22:37:16 254

原创 leetcode热题路径总和 III

不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。和等于 8 的路径有 3 条,如图所示。,求该二叉树里节点值之和等于。给定一个二叉树的根节点。

2025-12-14 11:29:26 269

原创 从前序与中序遍历序列构造二叉树

解题关键:构造中序hashMap<值,下标>, 前序列表中根节点的值在中序hashMap中得到中序下标,下标得出左子树的个数,右子树的个数,就可以确定左子树和右子树不断迭代的左右边界了。,请构造二叉树并返回其根节点。

2025-12-13 13:25:35 162

原创 二叉树展开为链表

【代码】二叉树展开为链表。

2025-11-30 17:43:41 218

原创 二叉树的右视图

想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

2025-11-30 12:22:09 166

原创 二叉搜索树中第 K 小的元素

请你设计一个算法查找其中第。小的元素(从 1 开始计数)。给定一个二叉搜索树的根节点。方法二:记录子树的结点数。

2025-11-29 20:57:04 254

原创 二叉树的各种特性

根节点叶子节点:没有子节点的节点节点的度:节点拥有的子树的数目树的度:树中节点最大的度。

2025-11-29 12:46:45 307

原创 leetcode验证二叉搜索树

先把最左节点压入栈,然后从最左节点中序遍历并比较大小,中序遍历是有序的。,判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。

2025-11-25 08:08:09 205

原创 将有序数组转换为二叉搜索树

关键点:确定数组中间元素为父节点,类似于二分法,递归以父节点构造左子节点和右子节点。排列,请你将其转换为一棵 平衡 二叉搜索树。

2025-11-20 21:16:34 205

原创 二叉树的层序遍历

解此题的关键是要记录每层的节点数,然后从容器中拿出对应的节点数。(即逐层地,从左到右访问所有节点)。

2025-11-18 22:48:27 164

原创 leetcode二叉树的直径

3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。这条路径可能经过也可能不经过根节点。是指树中任意两个节点之间最长路径的。给你一棵二叉树的根节点,返回该树的。由它们之间边数表示。

2025-11-17 22:24:24 129

原创 leetcode对称二叉树

给你一个二叉树的根节点。, 检查它是否轴对称。

2025-11-16 21:37:37 181

原创 leetcode翻转二叉树

关键逻辑:队列先进先出,从上到小,先把根节点放入队列,然后取出弹出根节点,交换左右节点,然后把左右节点放入队列,不断迭代,直到队列里没有节点。,翻转这棵二叉树,并返回其根节点。给你一棵二叉树的根节点。

2025-11-16 16:25:50 201

原创 leetcode二叉树的最大深度

逻辑:先把每一层所有节点放入容器中,记录深度1,一个一个的弹出,弹出的时候把下一层的节点依次放入容器中,上一层的全部弹出,然后只剩下下一层的,接着进行下一次的迭代。关系:maxDepth = Math.max(左子树的最大深度,右子树的最大深度)+1。

2025-11-16 11:52:07 254

原创 二叉树的中序遍历

前序遍历:根 左 右。中序遍历:左 根 右。后序遍历:左 右 根。

2025-11-16 10:39:59 119

原创 手写LRU 缓存

初始容量,每添加一个节点,就记录当前已添加的个数,如果添加之后已超过容量,则移除尾部的节点和hashMap里面的节点。要有一个双向链表,实现实现最近或刚添加的节点在头节点,要有一个hashMap存储节点,实现o(1)的查找。

2025-11-15 19:10:20 370

原创 合并K个排序链表

请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。

2025-11-15 12:40:23 95

原创 leetcode热题排序链表

【代码】leetcode热题排序链表。

2025-11-08 18:27:56 130

原创 随机链表的复制

指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。节点组成,其中每个新节点的值都设为其对应的原节点的值。个节点组成的链表来表示输入/输出中的链表。方法一: hash表构建原链表和新链表中每个元素的映射。的链表,每个节点包含一个额外增加的随机指针。,该指针可以指向链表中的任何节点或空节点。那么在复制链表中对应的两个节点。例如,如果原链表中有。返回复制链表的头节点。

2025-11-08 16:48:00 170

原创 K 个一组翻转链表

首先遍历出有多少个节点,然后用节点数/k,就得到该作多少次翻转,每一次反转要记录反转后的头,尾节点,用头尾指针把反转后的头连起来,再重新更新头尾指针。是一个正整数,它的值小于或等于链表的长度。方法二:先不用计算有多少个节点,在循环从当前节点往后推k个节点。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。自己写的笨方法,但是却没有超时。

2025-11-02 19:03:37 221

原创 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

2025-10-19 17:24:00 214

原创 删除链表的倒数第 N 个结点

先反转链表,再找到第n-1个结点。令Node(n-1).next = Node(n-1).next.next。先让指针一移动n,然后两个指针一起移动,当指针一到尾部的时候,两个指针中间就相差n个节点。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2025-10-12 18:30:37 225

原创 链表两数相加

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。

2025-10-12 16:30:50 187

原创 合并两个有序链表

递归的原理就是我们从最后一个节点开始往回看,首先必定有一个节点的next先到达null,那么不为null的那个就是倒数第二大的.next,然后把倒数第二大的返回上一层,然后通过if..else找到倒数第三的,然后倒数第三大.next = 倒数第二大的,以此向上递归。新链表是通过拼接给定的两个链表的所有节点组成的。用一个额外的指针来重新调节它们的next。将两个升序链表合并为一个新的。

2025-09-27 13:20:15 127

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除