自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 随机链表的复制

给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n个节点组成的链表来表示输入/输出中的链表。

2025-04-04 15:38:04 209

原创 反转链表 II

给你单链表的头指针head和两个整数left和right,其中。请你反转从位置left到位置right的链表节点,返回。[5]你可以使用一趟扫描完成反转吗?

2025-04-04 15:26:51 464

原创 插入区间

升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。你可以创建一个新数组然后返回它。按照区间起始端点排序的区间列表。表示另一个区间的开始和结束。个区间的开始和结束,并且。

2025-04-02 21:02:53 249

原创 矩阵置零

则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。

2025-04-02 20:40:19 432

原创 旋转图像

旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。使用另一个矩阵来旋转图像。

2025-04-02 20:10:25 199

原创 宝石组合

在一个神秘的森林里,住着一个小精灵名叫小蓝。有一天,他偶然发现了一个隐藏在树洞里的宝藏,里面装满了闪烁着美丽光芒的宝石。这些宝石都有着不同的颜色和形状,但最引人注目的是它们各自独特的 “闪亮度” 属性。每颗宝石都有一个与生俱来的特殊能力,可以发出不同强度的闪光。小蓝共找到了 NN 枚宝石,第 ii 枚宝石的 “闪亮度” 属性值为 HiHi​,小蓝将会从这 NN 枚宝石中选出三枚进行组合,组合之后的精美程度 SS 可以用以下公式来衡量:其中 LCM 表示的是最小公倍数函数。

2025-04-01 22:31:59 236

原创 握手问题

小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手 (但这 7 人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。

2025-04-01 22:23:41 162

原创 搜索二维矩阵

给你一个满足下述两条属性的。

2025-03-31 18:32:30 313

原创 寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回所在位置即可。你可以假设。你必须实现时间复杂度为O(log n)的算法来解决此问题。

2025-03-31 13:50:27 89

原创 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为。

2025-03-30 22:29:08 286

原创 多数元素

给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。32。

2025-03-30 21:14:32 734

原创 删除有序数组中的重复项 ||

给你一个有序数组nums,请你删除重复出现的元素,使得出现次数超过两次的元素,返回删除后数组的新长度。不要使用额外的数组空间,你必须在并在使用 O(1) 额外空间的条件下完成。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下://是以“引用”方式传递的。也就是说,不对实参做任何拷贝// 在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中的所有元素。

2025-03-30 20:19:15 411

原创 删除有序数组中的重复项

给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsnumsk系统会用下面的代码来测试你的题解:// 输入数组// 长度正确的期望答案// 调用i < k;i++) {如果所有断言都通过,那么您的题解将被。

2025-03-30 19:54:31 415

原创 旋转链表

给你一个链表的头节点head,旋转链表,将链表每个节点向右移动k个位置。

2025-03-28 20:16:25 380

原创 删除排序链表中的重复元素 ||

给定一个已排序的链表的头head删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。

2025-03-28 19:38:11 222

原创 合并区间

以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

2025-03-27 22:15:09 265

原创 快乐数

编写一个算法来判断一个数n是不是快乐数。如果n是快乐数就返回true;不是,则返回false。

2025-03-24 21:04:02 277

原创 简化路径

给你一个字符串path,表示指向某一文件或目录的 Unix 风格(以'/'开头),请你将其转化为。'.''..''//''///''/''...''....'返回的'/''/''/''.''..'返回简化后得到的。

2025-03-19 22:56:18 512

原创 分布式初步介绍

一个工程拆分了很多模块,每一个模块独立部署运行在一个服务器主机上,所有服务器协同工作共同提供服务,每一台服务器称作分布式的一个节点,根据节点的并发要求,对一个节点可以再做节点模块集群部署。

2025-03-19 17:50:54 775

原创 集群的初步介绍

每一台服务器独立运行一个工程的所有模块。

2025-03-19 17:37:18 287

原创 单机的初步介绍

把用户管理,好友管理,群组管理,消息管理,后台管理等模块构成我们的聊天服务器。后台管理有广播消息,公告消息,活动消息等功能业务。假设这个服务聊天器有5个模块,每个模块有几十上百个功能业务,这一套项目编译得花2个小时,部署得花3个小时。有些模块是CPU密集型的,这些模块应该部署在CPU资源非常好的机器上,有些模块是I/O密集型的,这些模块应该部署在内存大,带宽好的机器上,不需要太强的CPU资源。不同模块属于不同的型,对硬件的需求不一样,打包在一套机器上,只能综合所有模块,提出平衡的供给需求,没办法针对性。

2025-03-19 17:33:15 184

原创 迪杰斯特拉算法

【代码】迪杰斯特拉算法。

2025-03-19 17:13:28 100

原创 40亿个号码如何去重?

很显然,直接用bitmap, 标记这40亿个QQ号码的存在性,然后从小到大遍历正整数,当bitmapFlag的值为1时,就输出该值,输出后的正整数序列就是排序后的结果。这是一个unsigned char类型,可以看到,共有8位,取值范围是[0, 255],如上这个unsigned char的值是255,它能标识0~7这些数字都存在。很自然地,最简单的方式是对所有的QQ号码进行排序,重复的QQ号码必然相邻,保留第一个,去掉后面重复的就行。很显然,只有123,567,890存在,所以这也就是去重后的结果。

2025-03-19 17:06:07 974

原创 分治算法-合并k个有序链表

【代码】分治算法-合并k个有序链表。

2025-03-19 16:48:51 313

原创 Kruskal克鲁斯卡尔算法

我们先判断A-D,数组0号下标的值是2,0可以到达2,即A-C是连着的,然后我们看2,2可以到达5,即C-F是连着的,我们再来看5,是-1,5走不了,即F走不了,也就是说,最终是0可以走到5,即A可以走到F,我们现在看数组下标为3的值是5,即3可以到达5,即D可以到达F,即A-F,D-F,A和D在连接之前就可以走到同一个位置了,连接以后,肯定就形成回路了。然后我们选择此时权值最小的边:B-E,我们先判断,我们看数组1号下标的值是-1,数组4号下标的值也是-1,说明B和E在连接之前,哪也去不了。

2025-03-18 19:45:24 857

原创 最小生成树Prim普里姆算法

U放的是已经选好的点,V集合放的是未选好的点。首先选择权值最小的节点。我们选择从A开始,A-B,A-C,A-D中,权值最小的边是A-C,加入到最小生成树当中。把C加入到U集合中,也就是选进去了。然后把剩余顶点(BDEF)的权值都和C算一下,如果谁和C的权值,比它原本和A的权值更小,就更新一下。

2025-03-18 19:00:35 305

原创 无重复字符的最长子串

给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。1因为无重复字符的最长子串是"b",所以其长度为 1。3因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。

2025-03-17 20:44:46 322

原创 长度最小的子数组

大于等于目标值时,尝试右移左指针以缩小子数组长度。每次右移左指针时,更新最小窗口长度,并减少。使用滑动窗口(双指针)技术来寻找满足条件的最短子数组。‌ O(n),每个元素最多被访问两次(左指针和右指针各一次)。未被更新,说明不存在符合条件的子数组,返回0;找出该数组中满足其总和大于等于。从左到右遍历数组,将当前元素加入。如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。记录最小长度,初始为极大值。‌ O(1),仅使用常数空间。个正整数的数组和一个正整数。用于记录当前窗口的和,

2025-03-17 20:26:25 238

原创 三数之和

不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。

2025-03-17 20:11:42 639

原创 Dijkstra迪杰斯特拉算法

通过迪杰斯特拉算法,我们可以知道从起始节点开始,到任意一个节点的最短路径。

2025-03-16 19:27:25 934

原创 倒排索引的代码实现

【代码】倒排索引的代码实现。

2025-03-16 19:14:21 113

原创 倒排索引结构分析

它首先在这些文档看, 看一下search和google在这个文档里的位置,有没有哪一个位置是前后的,比如说,search是10,google是11,就说明这2个关键字是连续出现的,和用户的搜索的匹配度是最高的,就优先呈现,而且关键字的前后的备注信息,就是从这2个词的前后拿一些信息作为搜索结果呈现的摘要信息。然后因为用户搜索的是“search google”,此时搜索引擎分别找到这2个关键字对应的倒排项后,会对这2个关键字的倒排项进行取交集。这2个倒排项给用户呈现结果的时候,是怎么样呈现的?

2025-03-16 19:11:31 423

原创 正排索引&倒排索引

在这个表里通过添加1个标志来表示这个关键字是否在当前文档里出现。实际上,不仅仅用是否存在来记录1或者0,还可以记录i在这个p1文档出现了,具体出现在哪个位置,出现了多少次,这里的1就包含了在p1文档里的详细的信息。如果建立正排索引,当去搜索“search”这个关键字的时候,实际上,通过正排索引是不能直接知道search这个关键字在哪些文档里面的。

2025-03-16 18:10:44 866

原创 倒排索引理论

在打开百度,或者是谷歌,360浏览器,输入关键字以后,浏览器作为客户端把关键字发到对应的搜索引擎的服务器server端,服务器去分析这个关键字,在全网的所有网页html中(几千万,上亿个文件)中快速搜索出想要的内容,输一个关键字,敲一个回车,很快的所有的搜索结果都出来了,不到1秒的时间内搜索几千万个网页。在自己的电脑上去搜索一个文件,速度却非常的慢,有时候几十分钟都搜索不出来。

2025-03-16 17:57:13 240

原创 字符串模式匹配-KMP算法(4)

如果按照之前讲的KMP方法这一步也是没有并要的。j和首元素都是g是相同,g和上面对应的d不相同,你移到后面,此时g和d肯定也是不相同的,没必要比较。C和F比对失败,查看next数组C对应的k值是2,更新j=2之前是ABC,C和F比对失败,现在又还是ABC,C和F比对。这样比较就没有意思了说明前面的ABC和后面的ABC是一样的,当前C与F比对失败了,前面的移过来,也肯定是C与F比对,肯定也失败。此时C在next数组就不记录2了,这个公共子串就不要了,k回退也就是说公共串不需要AB这么长。

2025-03-15 22:43:11 505

原创 字符串模式匹配-KMP算法(3)

这种情况就是k退到0了。

2025-03-15 22:34:17 102

原创 字符串模式匹配-KMP算法(2)

当我们第一次比较失败了,i5j的时候,i不变,此时查看next数组中x字符对应的k值,是2,更新j=2,进行比较下去。d前面,e前面,x前面都没有公共子串,k都是k=0。b前面是:abca,公共子串是a,P0到P0,根据。a前面有3个元素abc,但是没有公共子串,k=0。b前面只有1个字符,就没有公共子串了,k=0。c前面只有2个元素ab,没有公共子串,k=0。c前面只有2个字符,也没有公共子串,k=0。b前面只有1个元素a,没有公共子串,k=0。子串的第一个元素a,k=-1。x前面是abcab,k=2。

2025-03-15 20:39:19 217

原创 字符串模式匹配-BF算法的缺点

因为BF算法对我们在字符比较失败之前的比对成功的字符信息没有存储,每次就是回退到原来比较的位置上后一个位置开始重新比较。因为原本对应的abcde是相等的,现在进行第二次比较的时候回到主串的第2个位置开始比较下去,肯定是不相等的。比较失败,把j重置为2。

2025-03-15 20:31:16 301

原创 字符串模式匹配-KMP算法(1)

就回退一下,看“ABCDAB"当中有没有可以局部匹配的信息。最长公共串是AB2个长度,然后我们把子串的第2+1个元素后移到当前比对失败的元素的位置上,然后开始和主串比较。如果比到不相同了,就看此时比对好的子串的部分的除去当前和主串不一样的元素,前面的部分进行看,有没有最长公共子串,然后把子串的第(最长公共子串的长度+1)的元素后移到当前比对失败的元素的位置上。

2025-03-15 20:23:52 1006

原创 动态规划-三角数组求和

【代码】动态规划-三角数组求和。

2025-03-15 16:44:24 370

空空如也

空空如也

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

TA关注的人

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