自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(52)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用Faiss进行K-Means聚类

除了默认的欧氏距离和内积距离,

2024-09-17 18:06:56 1295

原创 自定义前向与反向传播:torch.autograd.Function

PyTorch 的核心自动求导工具使用了一种基于动态计算图的机制。当你在Tensor上调用操作时,PyTorch 会根据这些操作动态地构建一个有向无环图(DAG)。在这个图中,叶子节点表示输入张量,根节点则是输出张量。每个节点都表示一个操作,而autograd通过从根节点回溯(backpropagation),逐步计算各个节点的梯度。PyTorch 自动求导的强大之处在于其动态计算图构建方式。在前向传播期间,每当执行一次操作,PyTorch 就会创建相应的计算图,并允许你通过backward()

2024-09-17 17:37:13 1143

原创 【2024】LeetCode HOT 100——图论

这里以DFS为例,DFS不需要开方向数组,不需要队列,实现更为简洁。经典的Flood Fill算法,可BFS也可DFS。如果仿照C++,用列表实现,实际运行效率会很低。为先修课程的要求数。

2024-06-29 16:42:54 625

原创 【2024】LeetCode HOT 100——回溯

时我们便得到了一个答案。个右括号组成的所有括号序列中,合法的括号序列有。因为共有卡塔兰数个方案,且构造每个方案需要。是否是回文串,这样就可以在回溯的过程中以。一个括号序列是合法的当且仅当它满足以下条件。而所有的括号序列共有。数组(布尔数组),它代表。为所有可行解的长度之和。是三个字母的数字个数,是四个字母的数字个数。的时间,故时间复杂度为。我们可以预处理出来一个。

2024-06-29 14:37:18 519

原创 【2024】LeetCode HOT 100——二分查找

34. 在排序数组中查找元素的第一个和最后一个位置调用即可。

2024-06-28 14:54:54 379

原创 【2024】LeetCode HOT 100——堆&栈

最大堆存储较小的一半元素,最小堆存储较大的一半元素。最大堆的堆顶是较小一半元素的最大值,最小堆的堆顶是较大一半元素的最小值。:如果最大堆的元素个数比最小堆多超过1个,则将最大堆的堆顶元素移到最小堆。如果最小堆的元素个数比最大堆多,则将最小堆的堆顶元素移到最大堆。:如果总元素个数为奇数,中位数为最大堆的堆顶。如果总元素个数为偶数,中位数为最大堆的堆顶与最小堆的堆顶的平均值。:如果新元素小于或等于最大堆的堆顶,将其插入最大堆。否则,将其插入最小堆。,我们可以借助计数排序的思想,将其降低至。

2024-06-27 16:50:35 288

原创 【2024】LeetCode HOT 100——贪心算法

出发能够到达的最远位置(可以理解为不断拓展右边界),如果。因此,时间复杂度是与价格数组的长度。),不依赖于输入大小。所需的额外空间是常量级别的。首先可以证明,能够跳到的位置一定是。代码只使用了几个额外的变量 (代码中的循环遍历了价格数组。和上一题一样,只不过本题是求。(题目保证可以跳到最后)。我们可以设置两个指针,(可用反证法证明)。

2024-06-26 12:06:40 311

原创 【2024】LeetCode HOT 100——技巧

这样的升序对,说明整个序列都是降序的,直接翻转该序列即可。之外每个节点都有一条入边,这意味着图中一定有环。这道题是「荷兰国旗问题」,我们需要维护三个指针。,首先从后往前找到第一个升序的元素对,记为。仍是降序的,我们让这一段变为升序的即可。,说明每个节点都有一条出边,且除了。向左移动,任一时刻,需要满足,重复了不止一次,说明节点。,那么数组的下标范围是从。的入边至少有两条,即。

2024-05-29 17:39:51 366 1

原创 【2024】LeetCode HOT 100——多维动态规划

我们可以枚举回文串的中心,然后从中心开始向两边扩展,并不断更新最大值。回文子串有两种类型,一种是偶数长度的,一种是奇数长度的。枚举中心的时候要同时考虑两种类型的回文串。的最少步数,我们只关注如何从。的最长公共子序列的长度。

2024-05-27 19:38:01 235

原创 【2024】LeetCode HOT 100——动态规划

如果只有一间房屋,则偷窃该房屋,可以偷窃到最高总金额。如果只有两间房屋,则由于两间房屋相邻,不能同时偷窃,只能偷窃其中的一间房屋,因此选择其中金额较高的房屋进行偷窃,可以偷窃到最高总金额。这道题的第一想法可能使用贪心来做,但贪心是会失败的,来看这样一个示例:硬币数组。在两个选项中选择偷窃总金额较大的选项,该选项对应的偷窃总金额即为前。但要注意的是,这是一个只涉及体积,不涉及价值的背包问题。结尾的最长有效括号的长度。的所有子串中,只有它本身是字典中的单词,故取。结尾的最长递增子序列的长度,那么本题答案为。

2024-05-26 17:30:19 253

原创 【2024】LeetCode HOT 100——二叉树

的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。首先我们需要了解什么是二叉树的中序遍历:按照访问。

2024-04-09 14:29:07 220

原创 【2023】LeetCode HOT 100——链表

那么移动路径形如。

2023-08-30 19:28:31 557

原创 【2023】LeetCode HOT 100——矩阵

分别代表右、下、左、上四个方向。每次碰壁或者遇到已经走过的地方,我们需要将方向顺时针旋转。等价于先将图像沿主对角线翻转,然后再图像水平翻转。如果将本题改为逆时针,则。使用方向数组即可实现。

2023-08-27 14:23:12 803

原创 【2023】LeetCode HOT 100——普通数组

统计左边的数出现的频率可以用一个哈希表来完成,而对于右边的数,我们可以在一开始初始化一个大的哈希表,然后在枚举的时候减去相应的频率即可。注意,由于遍历到当前区间时至多保存上一个区间,因此遍历结束后最后一个区间不会得到保存,所以我们需要手动保存最后一个区间。的比较,所以排序实际上是先按照第一个元素排序,再按照第二个元素,以此类推。本题和本文的第一题十分相似,只不过第一题只有一个区间,而本题有两个区间。为结尾的连续子数组的最大和,记为。区间内的连续子数组的最大和,记为。区间内的连续子数组的最大和,记为。

2023-08-25 18:57:18 454

原创 【2023】LeetCode HOT 100——滑动窗口&子串

的滑动窗口并用哈希表统计这个窗口内的字符频率。在证明了双指针的单调性后,我们就可以使用它了。中的字符频率,一个哈希表用来统计滑动窗口中字符的频率。谈到子数组的和,就可以联想到区间和,而求区间和通常会用到前缀和算法。变量,用来跟踪当前窗口中包含了多少个满足条件的目标字符(即字符串。为右端点的无重复字符的最长子串的左端点,那么按照之前的思路,当。我们枚举子串的右端点。时,如果出现了重复的字符,那么重复的字符必然是。中字符的数量时,表示当前窗口中已经包含了字符串。为右端点的无重复字符的最长子串的左端点,矛盾!

2023-08-24 15:58:22 667

原创 【2023】LeetCode HOT 100——双指针

我们可以预处理出前缀最大数组(类似于前缀和数组)和后缀最大数组,这样就可以在。按照「三数之和」的思路,我们会首先对原数组从小到大进行排序,然后枚举第一个数。由于数组是有序的,那么相同的数字必然相邻,因此如果。,那么后两个条件会自动满足,我们只需要确保第一个条件。可以发现,无论移动哪一个指针,并不是和的形式,我们无法使用相向双指针进行处理。思路与三数之和一致,但要注意溢出的情况,需要开。先不考虑重复的问题,首先对原数组排个序,那么。是求和的形式,因此可以使用相向双指针。,那么这两个指针形成的容器的储水量为。

2023-08-20 14:28:14 436

原创 【2023】LeetCode HOT 100——哈希

注意到字母异位词按照字典序排列后等于原单词,因此我们可以以原单词为键来记录该单词衍生出的所有字母异位词。」有异曲同工之妙,都是在枚举一个数的同时统计该数左边的情况。的时间内完成,所以我们不能对原数组进行排序。即可,这可以用一个哈希表来记录。为起点的最长连续序列的长度为。考虑枚举数组中的每个数。,以它为起点,尝试匹配。个字符串的最大长度。

2023-08-19 01:11:55 386

原创 【2024】LeetCode HOT 100——导航

现已完结。

2023-08-18 23:38:37 483

原创 【2023】字节跳动 10 日心动计划——导航

关于该专题的刷题已整理完毕,以下是内容导航。

2023-08-18 22:11:00 339

原创 LeetCode 786. 第 K 个最小的素数分数

个“链表”的表头加入到优先队列中,后续看哪一个链表的表头被弹出,就向优先队列中加入该链表的下一个“节点”。于是我们可以像「合并K个有序链表」那样找到第。个“链表”全部构造出来,花费的时间就已经是。这里有一个巧妙的做法,我们一开始只把。次后,优先队列的队头就是最终的答案。因为用到了排序,所以时间复杂度是。本题还有更优雅的解法,复杂度为。这里有一个小细节,我们在判断。,这样不会引入浮点数的误差。注意,如果我们一开始就把。的时候可以将其转化成。中选,因此我们可以将。

2023-08-18 21:19:19 321

原创 【2023】字节跳动 10 日心动计划——第十关

AVL树的定义是递归的,即一个树是AVL树当且仅当根节点的左右子树都是AVL树且两者高度差不超过1。注意细节,路径必须是从根节点到叶子结点。

2023-08-18 19:58:07 300

原创 【2023】字节跳动 10 日心动计划——第九关

题目中规定了同一个字符不能出现在多个区间中,因此对于一个字符而言,如果它包含于某个区间,那么这个区间应当包含所有这样的字符。我们依次枚举该区间的每一个字符,并用字符最后一次出现的下标来更新区间的右端点,这样一来,我们就可以得到不可分割的第一个区间。回到本题,为了避免重复,我们同样可以先对数组排个序以确保相同的数字相邻,然后枚举每个位置,对于每个位置,枚举这个位置上对应的数可能出现的次数,即。回顾全排列 II,我们的枚举思路和全排列 I相同,但是为了避免重复,我们固定了相同数字的相对位置。

2023-08-13 16:00:17 268

原创 【2023】字节跳动 10 日心动计划——第八关

式在形式上是完全一致的,无非是嵌套的括号数量不一致。代表Python中的字符串乘法)就达到了“去括号”的目的。将链表从中间一分为二,再将后半部分翻转,最后对两个链表进行二路归并即可。那么最内层的括号中一定只含有字母,由于左括号左边一定紧跟数字,所以。由于是循环数组,我们可以先将两个原数组拼接在一起,然后再应用单调栈。的时候,就可以继续执行同样的操作来达到“去括号”的目的。一定是最内层的括号,此时我们需要去掉最内层的括号,让。我们从左向右扫描整个字符串,遇到的第一个。为0,从左向右扫描时不断累加,遇到。

2023-08-13 16:00:03 299

原创 【2023】字节跳动 10 日心动计划——第七关

因为对于全排列问题,当前位置的所有状态和数组长度有关,所以我们只能通过for循环来实现。而对于子集问题,当前位置的状态只有两种,因此不必使用for循环,直接展开即可。类似地,对于子集问题,我们同样要遍历当前位置的所有状态,即选当前位置的数或者不选。个位置(当前位置)上的所有状态(假设前。的递归搜索树,我们要在dfs函数里。我们可以举一反三,生成一个长度为。对于递归,则是dfs暴搜一下。轮的时候,我们会漏掉最终的。对于迭代,假设序列的长度为。,我们可以用一串长度为。串,即每个位置要么是。

2023-08-06 14:43:58 520

原创 【2023】字节跳动 10 日心动计划——第六关

注意到数组是有序的,因此我们可以用二分去处理,时间复杂度可以降至。,前者不满足这个条件,后者满足这个条件,所以我们可以套用。既然要用二分,那我们就需要找到一个性质能够将区间。是偶数,且数组的长度是奇数,不妨设为。的左右两边各有偶数个元素,从而。不妨设只出现一次的元素的下标是。是否相等,如果相等,则。是否相等,如果相等,则。,从而我们只需要判断。

2023-08-05 21:01:11 975 1

原创 【2023】字节跳动 10 日心动计划——第五关

求有多少个和为K的子数组即求有多少个区间和等于K(注意子数组和子序列不一样,子序列可以是不连续的),而提到区间和就应当想到前缀和。在输入序列中不一定相邻,所以我们要在一开始对输入序列排个序,这样一来,相同的数字就会相邻。字符串的全排列和数字序列的全排列本质是相同的,我们先回顾一下两道数字全排列的题目。在dfs的过程中,我们是从左往右依次填入数字的,在填某一个位置的时候,能够填。本题是典型的dfs,但有一个细节就是,返回的结果不能包含重复的元素。,为方便观察,我们给相同的数字赋予不同的下标,即。

2023-08-05 17:06:02 462

原创 【2023】字节跳动 10 日心动计划——第四关

天卖出股票可获得最大利润,那么买入股票必然是在前。更进一步,买入股票应当是第。家能够获得的最大金额,那么我们可以按照第。此外,还可以使用滚动数组将空间复杂度优化至。间房屋,那么剩下可以偷窃的范围就是。间房屋,那么剩下可以偷窃的范围就是。天卖出股票能够获得的最大利润。取两者中的最大值就是本题答案。这说明我们可以维护一个。先回顾第一代的打家劫舍。

2023-08-04 23:21:06 286

原创 【2023】字节跳动 10 日心动计划——第三关

具体来讲,我们始终保持栈底元素为当前已经遍历过的元素中「最后一个没有被匹配的右括号的下标」,这样的做法主要是考虑了边界条件的处理,栈里其他元素维护左括号的下标。之前我们是让两个指针从中间往两边移动,这次我们让两个指针从两边往中间移动,所以填答案的时候需要倒着填。判断栈是否为空,如果栈为空,说明当前的右括号为没有被匹配的右括号,将其压入栈中,否则,更新答案。注意,任何时刻,只有栈底元素是右括号的下标,其他元素都是左括号的下标!方法一:找到正负元素的分界线,然后对正、负数组进行二路归并。,则将其下标压入栈中;

2023-08-04 20:59:12 668

原创 【2023】字节跳动 10 日心动计划——第二关

的形式,但其中有若干个位置上的数是错误的,每一个错误的位置就代表了一个缺失的正数。,由此可知缺失的数是2。恢复后,数组应当具有。

2023-07-21 23:04:14 337

原创 【2023】字节跳动 10 日心动计划——第一关

看到前缀应当想到,我们可以将dictionary中的每个单词都插入到前缀树中,然后扫描sentence中的每个单词看是否需要进行替换。

2023-07-18 10:14:47 512

原创 深度学习常见模型大小汇总(持续更新...)

本篇博客将记录深度学习领域常见模型的大小,具体算法如下模型可能来自于PyTorch官方,HuggingFace等。如有错误或者建议欢迎在评论区指出。第三方库版本4.30.2PyTorch2.0.1。

2023-07-09 21:42:16 1752

原创 AcWing 756. 蛇形矩阵

AcWing 756. 蛇形矩阵

2023-01-02 19:03:52 494 2

原创 AcWing 725. 完全数

AcWing 725. 完全数

2023-01-02 15:10:27 525

原创 情感分析系列(四)——使用BERT进行情感分析

使用BERT进行情感分析

2022-11-01 22:12:11 5205 1

原创 情感分析系列(三)——使用TextCNN进行情感分析

使用TextCNN进行情感分析

2022-10-30 13:58:30 2297

原创 情感分析系列(二)——使用BiLSTM进行情感分析

使用BiLSTM进行情感分析

2022-10-28 16:05:37 3111 2

原创 情感分析系列(一)——IMDb数据集及其预处理

IMDb数据集及其预处理

2022-10-28 12:21:23 9699 1

原创 邻接矩阵的COO格式

我们知道,邻接矩阵通常是稀疏矩阵,而COO格式(CoordinateFormat)是稀疏矩阵的一种存储方式,本文将简要介绍如何将无权无向图的邻接矩阵转化为COO格式。顾名思义,COO格式即坐标格式,我们只需考虑邻接矩阵中不为零的元素的坐标。对于无权无向图,其邻接矩阵是对称阵并且元素非。先考虑下三角部分,不为零的元素的坐标为。,因此所有不为零的元素的坐标为。............

2022-07-26 11:56:21 1287

原创 浅谈Node Embedding

Node Embedding

2022-07-24 11:52:32 604

原创 NetworkX的基本用法

NetworkX

2022-07-20 21:36:55 2340 3

LLaMA Tokenizer

LLaMA原生Tokenizer,词表大小为32000。

2024-02-09

IMDb-Large Movie Review Dataset

数据集官网:https://ai.stanford.edu/~amaas/data/sentiment/ 数据集的训练集和测试集各有25000个样本,且正负样本个数相同,均为12500个。 该数据集和官网提供的相比,去除了一些不必要的文件,其他均未改动。

2022-10-28

彻底解决Mac端git clone/push速度太慢的问题

彻底解决Mac端git clone/push速度太慢的问题,详情请参阅文档。

2022-07-29

常见英文单词数据集(NLP)

该数据集可用于NLP任务,其中train.txt中包含了8000个单词,test.txt中包含了2000个单词,训练集和测试集互不交叉。 注:数据集为乱序,且均为小写字母组成的单词。 博主整理不易,仅收费2软妹币,望理解。

2022-06-23

PyTorch 人名分类数据集

PyTorch官方提供的数据集,用于NLP任务。

2022-06-21

PyTorch CNN 训练/测试/绘图 模块

在学习到 d2l 中的 CNN 板块时,发现对于大部分 CNN,除了架构网络的代码不同以外,其训练和测试的代码大部分情况都是相同的,为了简化代码的书写特地编写了这个模块(雾)。 该模块基于 PyTorch 实现。 如何使用该模块请看我的这篇文章:https://blog.csdn.net/raelum/article/details/124716176 该模块支持 CNN 的训练和测试,同时可绘制训练集/测试集的损失函数曲线,训练集/测试集的精度。此外,该模块能够计算 GPU 的读取速度。

2022-05-15

空空如也

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

TA关注的人

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