- 博客(999)
- 收藏
- 关注
原创 跳跃游戏II
给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向后跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。2跳到最后一个位置的最小跳跃数是2。从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。2。
2025-04-07 21:29:19
361
原创 跳跃游戏
给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。true可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。false无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
2025-04-07 21:20:46
151
原创 回文数组
小蓝在无聊时随机生成了一个长度为 n 的整数数组,数组中的第 i 个数为 ai,他觉得随机生成的数组不太美观,想把它变成回文数组,也是就对于任意 i∈[1,n], 满足 ai=an−i+1。小蓝一次操作可以指定相邻的两个数,将它们一起加 1 或减 1;也可以只指定一个数加 1 或减 1,请问他最少需要操作多少次能把这个数组变成回文数组?
2025-04-06 19:30:29
310
原创 分巧克力
儿童节那天有 K 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。切出的巧克力需要满足:形状是正方形,边长是整数;大小相同;例如一块6×5 的巧克力可以切出 6 块2×2 的巧克力或者 2 块 3×3 的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?
2025-04-06 17:32:20
433
原创 随机链表的复制
给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的。深拷贝应该正好由n个节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。。例如,如果原链表中有X和Y两个节点,其中。那么在复制链表中对应的两个节点x和y,同样有。返回复制链表的头节点。用一个由n个节点组成的链表来表示输入/输出中的链表。
2025-04-04 15:38:04
444
原创 反转链表 II
给你单链表的头指针head和两个整数left和right,其中。请你反转从位置left到位置right的链表节点,返回。[5]你可以使用一趟扫描完成反转吗?
2025-04-04 15:26:51
561
原创 插入区间
升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。你可以创建一个新数组然后返回它。按照区间起始端点排序的区间列表。表示另一个区间的开始和结束。个区间的开始和结束,并且。
2025-04-02 21:02:53
269
原创 宝石组合
在一个神秘的森林里,住着一个小精灵名叫小蓝。有一天,他偶然发现了一个隐藏在树洞里的宝藏,里面装满了闪烁着美丽光芒的宝石。这些宝石都有着不同的颜色和形状,但最引人注目的是它们各自独特的 “闪亮度” 属性。每颗宝石都有一个与生俱来的特殊能力,可以发出不同强度的闪光。小蓝共找到了 NN 枚宝石,第 ii 枚宝石的 “闪亮度” 属性值为 HiHi,小蓝将会从这 NN 枚宝石中选出三枚进行组合,组合之后的精美程度 SS 可以用以下公式来衡量:其中 LCM 表示的是最小公倍数函数。
2025-04-01 22:31:59
295
原创 握手问题
小蓝组织了一场算法交流会议,总共有 50 人参加了本次会议。在会议上,大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人,这 7 人彼此之间没有进行握手 (但这 7 人与除这 7 人以外的所有人进行了握手)。请问这些人之间一共进行了多少次握手?注意 A 和 B 握手的同时也意味着 B 和 A 握手了,所以算作是一次握手。
2025-04-01 22:23:41
185
原创 寻找峰值
峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回所在位置即可。你可以假设。你必须实现时间复杂度为O(log n)的算法来解决此问题。
2025-03-31 13:50:27
111
原创 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为。
2025-03-30 22:29:08
305
原创 多数元素
给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。32。
2025-03-30 21:14:32
760
原创 删除有序数组中的重复项 ||
给你一个有序数组nums,请你删除重复出现的元素,使得出现次数超过两次的元素,返回删除后数组的新长度。不要使用额外的数组空间,你必须在并在使用 O(1) 额外空间的条件下完成。为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下://是以“引用”方式传递的。也就是说,不对实参做任何拷贝// 在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中的所有元素。
2025-03-30 20:19:15
427
原创 删除有序数组中的重复项
给你一个的数组nums,请你删除重复出现的元素,使每个元素,返回删除后数组的新长度。元素的应该保持。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为knumsnumsknumsnumsnumsk系统会用下面的代码来测试你的题解:// 输入数组// 长度正确的期望答案// 调用i < k;i++) {如果所有断言都通过,那么您的题解将被。
2025-03-30 19:54:31
434
原创 合并区间
以数组intervals表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
2025-03-27 22:15:09
284
原创 简化路径
给你一个字符串path,表示指向某一文件或目录的 Unix 风格(以'/'开头),请你将其转化为。'.''..''//''///''/''...''....'返回的'/''/''/''.''..'返回简化后得到的。
2025-03-19 22:56:18
534
原创 分布式初步介绍
一个工程拆分了很多模块,每一个模块独立部署运行在一个服务器主机上,所有服务器协同工作共同提供服务,每一台服务器称作分布式的一个节点,根据节点的并发要求,对一个节点可以再做节点模块集群部署。
2025-03-19 17:50:54
799
原创 单机的初步介绍
把用户管理,好友管理,群组管理,消息管理,后台管理等模块构成我们的聊天服务器。后台管理有广播消息,公告消息,活动消息等功能业务。假设这个服务聊天器有5个模块,每个模块有几十上百个功能业务,这一套项目编译得花2个小时,部署得花3个小时。有些模块是CPU密集型的,这些模块应该部署在CPU资源非常好的机器上,有些模块是I/O密集型的,这些模块应该部署在内存大,带宽好的机器上,不需要太强的CPU资源。不同模块属于不同的型,对硬件的需求不一样,打包在一套机器上,只能综合所有模块,提出平衡的供给需求,没办法针对性。
2025-03-19 17:33:15
196
原创 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
1001
原创 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
885
原创 最小生成树Prim普里姆算法
U放的是已经选好的点,V集合放的是未选好的点。首先选择权值最小的节点。我们选择从A开始,A-B,A-C,A-D中,权值最小的边是A-C,加入到最小生成树当中。把C加入到U集合中,也就是选进去了。然后把剩余顶点(BDEF)的权值都和C算一下,如果谁和C的权值,比它原本和A的权值更小,就更新一下。
2025-03-18 19:00:35
342
原创 无重复字符的最长子串
给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。1因为无重复字符的最长子串是"b",所以其长度为 1。3因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。
2025-03-17 20:44:46
331
原创 长度最小的子数组
大于等于目标值时,尝试右移左指针以缩小子数组长度。每次右移左指针时,更新最小窗口长度,并减少。使用滑动窗口(双指针)技术来寻找满足条件的最短子数组。 O(n),每个元素最多被访问两次(左指针和右指针各一次)。未被更新,说明不存在符合条件的子数组,返回0;找出该数组中满足其总和大于等于。从左到右遍历数组,将当前元素加入。如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。记录最小长度,初始为极大值。 O(1),仅使用常数空间。个正整数的数组和一个正整数。用于记录当前窗口的和,
2025-03-17 20:26:25
245
原创 三数之和
不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。
2025-03-17 20:11:42
652
原创 倒排索引结构分析
它首先在这些文档看, 看一下search和google在这个文档里的位置,有没有哪一个位置是前后的,比如说,search是10,google是11,就说明这2个关键字是连续出现的,和用户的搜索的匹配度是最高的,就优先呈现,而且关键字的前后的备注信息,就是从这2个词的前后拿一些信息作为搜索结果呈现的摘要信息。然后因为用户搜索的是“search google”,此时搜索引擎分别找到这2个关键字对应的倒排项后,会对这2个关键字的倒排项进行取交集。这2个倒排项给用户呈现结果的时候,是怎么样呈现的?
2025-03-16 19:11:31
439
原创 正排索引&倒排索引
在这个表里通过添加1个标志来表示这个关键字是否在当前文档里出现。实际上,不仅仅用是否存在来记录1或者0,还可以记录i在这个p1文档出现了,具体出现在哪个位置,出现了多少次,这里的1就包含了在p1文档里的详细的信息。如果建立正排索引,当去搜索“search”这个关键字的时候,实际上,通过正排索引是不能直接知道search这个关键字在哪些文档里面的。
2025-03-16 18:10:44
975
原创 倒排索引理论
在打开百度,或者是谷歌,360浏览器,输入关键字以后,浏览器作为客户端把关键字发到对应的搜索引擎的服务器server端,服务器去分析这个关键字,在全网的所有网页html中(几千万,上亿个文件)中快速搜索出想要的内容,输一个关键字,敲一个回车,很快的所有的搜索结果都出来了,不到1秒的时间内搜索几千万个网页。在自己的电脑上去搜索一个文件,速度却非常的慢,有时候几十分钟都搜索不出来。
2025-03-16 17:57:13
252
原创 字符串模式匹配-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
522
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人