- 博客(506)
- 资源 (1)
- 收藏
- 关注
原创 Swin Transformer
上面的常规的窗口虽然可以降低计算的复杂度,但是又产生了新问题,将图像分成多个窗口后,只能窗口内计算自注意力,窗口间没办法交互,限制了模型的建模能力。将窗口内的patch按照通道方向展平,红色的部分和红色部分的转置以及绿色部分和绿色部分的转置计算的才可以使用,其他的部分“扔掉”,就是使用Masked,给他赋值-100,在计算softmax就是0了。但是,我们发现他的窗口的数量增加了,从4个窗口变成9个窗口,计算量上来了,为此,提出Cyclic-shift 循环移位。这也意味着,在计算自注意力的时候,
2024-04-06 09:41:55
896
原创 Vit Transformer
vit :论文是基于,由于图像数据和词数据数据格式不一样,经典的transformer不能处理图像数据,在视觉领域的应用有限。本文提出的方法可以将transformer直接应用图像分类任务,引入Patch Embedding,位置编码等方法,克服了Transformer在处理图像数据时的限制。整体流程如下。1 )第一部分是Linear Projection of Flattened Patches ,也就是 Emdedding 层,主要的工作就是将图像数据转换成transformer可以处理的数据格式。
2024-03-26 21:31:58
1019
原创 1094. 拼车(差分&堆排序)
对于一个给定的数组 arr[0…n-1],其差分数组 diff[0…n-1]定义diff0arr0diff0arr0diffiarri−arri−1diffiarri−arri−1对于所有0in0 < i < n0in这意味着 $ diff[i]存储了存储了存储了arr[i]$和 $arr[i-1] $之间的差值。
2023-12-02 16:25:28
1014
3
原创 44. 通配符匹配(动态规划)
给你一个输入字符串 (s) 和一个字符模式p ,请你实现一个支持 ‘?’ 和 ‘’ 匹配规则的通配符匹配:‘?’ 可以匹配任何单个字符。'’ 可以匹配任意字符序列(包括空字符序列)。判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。示例 1:假设 dp[i][j] 表示字符串s的前i字符和匹配串p的前j个字符的匹配结果。分下面情况 :
2023-11-30 19:40:00
1198
1
原创 1657. 确定两个字符串是否接近(排序)
如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :操作 1:交换任意两个 现有 字符。例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )你可以根据需要对任意一个字符串多次使用这两种操作。给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近 ,就返回 true ;否则,返回 f
2023-11-30 09:57:33
493
1
原创 2948. 交换得到字典序最小的数组 (分组排序)
给你一个下标从 0 开始的 正整数 数组 nums 和一个 正整数 limit 。在一次操作中,你可以选择任意两个下标 i 和 j,如果 满足 |nums[i] - nums[j]| <= limit ,则交换 nums[i] 和 nums[j] 。返回执行任意次操作后能得到的 字典序最小的数组 。如果在数组 a 和数组 b 第一个不同的位置上,数组 a 中的对应字符比数组 b 中的对应字符的字典序更小,则认为数组 a 就比数组 b 字典序更小。例如,数组 [2,10,3] 比数组 [10,2,3] 字典序
2023-11-29 20:52:02
528
1
原创 2947. 统计美丽子字符串 I (前缀和)
给你一个字符串 s 和一个正整数 k 。用 vowels 和 consonants 分别表示字符串中元音字母和辅音字母的数量。如果某个字符串满足以下条件,则称其为 美丽字符串 :vowels == consonants,即元音字母和辅音字母的数量相等。(vowels * consonants) % k == 0,即元音字母和辅音字母的数量的乘积能被 k 整除。返回字符串 s 中 非空美丽子字符串 的数量。子字符串是字符串中的一个连续字符序列。英语中的 元音字母 为 ‘a’、‘e’、‘i’、‘o’ 和 ‘
2023-11-28 15:57:45
1006
1
原创 220. 存在重复元素 III(滑动窗口+有序集合)
给你一个整数数组 nums 和两个整数 indexDiff 和 valueDiff 。找出满足下述条件的下标对 (i, j):暴力搜索的话,就是两层循环,枚举(i,j),找到符合条件的即可,但是会超时 O(n2)O(n^{2})O(n2)。用滑动窗口来优化,我们维护一个长度始终小于等于t的有序集合。窗口收缩时机 : 当,收缩左端点。题目中要求窗口内的 , 我们使用一个 Set来维护窗口内的值,存在 就返回true,
2023-11-26 10:36:13
433
1
原创 76. 最小覆盖子串 (滑动窗口)
Note :如果在每次开始收缩时记录当前的字符串,在266数据会卡内存,所以要改成记录子串的起始start,通过substr(start,len),获取最小子串。
2023-11-25 21:19:33
472
1
原创 1387. 将整数按权重排序(递归 +记忆化+排序)
Problem:我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数:如果 x 是偶数,那么 x = x / 2如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。给你三个整数 lo, hi 和 k。
2023-11-24 16:30:47
433
1
原创 1553. 吃掉 N 个橘子的最少天数(记忆化+贪心优化)
使得 n 变成0的操作有三种方式 :优化一下我们肯定是希望这样的操作尽可能少(贪心)。优先选择操作2和3.
2023-11-23 10:40:53
115
2
原创 241. 为运算表达式设计优先级(分治 +记忆化)
Problem:给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过104。示例 1:输入:expression = “2-1-1” 输出:[0,2] 解释:示例 2:输入:expression = “23-45”输出:[-34,-14,-10,-10,10] 解释:(2*(3-(45))) = -34。
2023-11-20 08:42:45
57
1
原创 139. 单词拆分(DFS+记忆化优化)
Problem:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s。:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。示例 1: 输入: s = “leetcode”, wordDict = [“leet”, “code”] 输出: true 解释: 返回true 因为 “leetcode” 可以由 “leet” 和 “code” 拼接成。
2023-11-16 21:27:02
103
1
原创 698. 划分为k个相等的子集(记忆化搜索+状态压缩)
Problem:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。示例 2:输入: nums = [1,2,3,4], k = 3输出: false。
2023-11-15 16:58:29
72
1
原创 525. 连续数组 (前缀和 + 哈希)
Problem:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。
2023-11-09 20:00:17
182
原创 523. 连续的子数组和 (前缀和 + 同余性质+哈希)
暴力超时解题方法假设我们的目标是求得 S[j]−S[i−1] S[j]-S[i-1] S[j]−S[i−1](区间 [i,j]的和)是满足整除k,则S[j]−S[i−1]%k==0S[j]-S[i-1] \% k ==0 S[j]−S[i−1]%k==0 ,即存在一个整数n ,满足 S[j]−S[i−1]=n∗kS[j] -S[i-1] = n*k S[j]−S[i−1]=n∗k两边同时除以 k , S[j]k−S[i−1]k=n \frac{S[j]}{k} -\frac{S[i-1]}{k}
2023-11-07 10:47:23
107
原创 21. 合并两个有序链表
分析问题对于本题,合并两个有序链表A和B,mergeTwoLists(A,B),递归只需要关注本层我要干什么?,返回什么?首先我要先直到A,B 哪个链表的头最小,让最小的那个节点指向剩余部分合并的有序链表头,然后返回当前的结点头。基本情况2 迭代实现创建一个新的节点preHead ,遍历两个链表,每次让新节点指向两个链表中的最小的一个结点,更新preHead。
2023-11-05 20:29:57
124
原创 234. 回文链表
Problem: 234. 回文链表文章目录解题方法复杂度Code解题方法找到链表的中点:首先,我们可以使用快慢指针技巧来找到链表的中点。慢指针每次移动一步,快指针每次移动两步。当快指针到达链表的末尾时,慢指针就会指向链表的中点。反转后半部分(使用递归反转链表)比较前半部分和后半部分复杂度时间复杂度:时间复杂度, 示例: O(n)O(n)O(n)空间复杂度:空间复杂度, 示例: O(n)O(n)O(n)Codeclass Solution {public
2023-11-01 11:16:19
74
原创 206. 反转链表
进入函数,首先检查基本情况,因为链表有多个节点,所以我们继续。接着,进行递归调用 reverse_list(2)。现在,我们调用 reverse_list(2)。同样,我们检查基本情况,因为链表有多个节点,所以我们继续。接着,进行递归调用 reverse_list(3)。同理,我们调用 reverse_list(3),然后调用 reverse_list(4),再然后调用 reverse_list(5)。当我们调用 reverse_list(5) 时,我们到达链表的末尾。对于基本情况,因为 5 的下一
2023-11-01 09:46:14
79
1
原创 235. 二叉搜索树的最近公共祖先
Problem: 235. 二叉搜索树的最近公共祖先文章目录思路方法Code思路二叉树中两个结点的最近公共祖先,可以这样寻找,从根节点出发,分别到达p,q两个结点时,一定会分叉,那么分叉时的结点就是公共祖先。方法分别将从根节点出发到达 p ,q的路径上的结点存储下来,然后判断什么时候分叉的。Codeclass Solution {public: // 从根节点出发到 target结点 路上所经过的所有结点加入 path vector<TreeNode*
2023-07-30 16:21:45
174
原创 计算并展示指定文件夹的大小
有时候电脑里磁盘空间越来越小,不得不删除一些占空间大的文件。最笨的方法就是对某一个文件夹下一个一个查看大小,效率太慢。
2023-07-29 15:05:46
356
原创 56. 合并区间 排序
Problem: 56. 合并区间文章目录思路Code思路对数组排序,按照左端点从小到大排序。初始化Merged,将第一个区间放入。遍历intervals ,如果当前区间的左端点比merged最后一个区间的右端点大,不重合,直接将该区间加入最后,否则,重合,更新最后一个区间的右端点。Codeclass Solution {public: vector<vector<int>> merge(vector<vector<int>>&
2023-07-28 16:44:06
298
原创 130. 被围绕的区域
Problem: 130. 被围绕的区域文章目录思路解题方法Code思路这道题目可以使用 dfs来做,对于board中的“O”来说,任何不在边界上,或不**与边界上的 ‘O’ 相连的 ‘O’ **最终都会被填充为 ‘X’。也就是说,除了边界上的还有与边界上"0"相连的其他 “O"都要被填充成“X” .因此我们从每一个边界上的 “O"出发,标记所有边界上以及与之相连的"O”。填充为“A”,之后遍历board 现在所有的"O"就是应该被填充为"X"的。解题方法dfsCodeclass
2023-07-28 15:37:25
109
原创 116. 填充每个节点的下一个右侧节点指针 层次遍历
Problem: 116. 填充每个节点的下一个右侧节点指针文章目录思路解题方法Code思路首先层次遍历一下满二叉树并记录结点个数(由结点编号可以计算出当前所在的层数,由于每层的最后一个结点的next是指向NULL),将其压入栈,然后对栈进行操作。解题方法int h = static_cast<int>(log2(cnt ))+1 ; // 根据当前结点编号,计算当前结点所在的层数,int lastNode = pow(2, h) - 1; 每层的最后一个结点的编号
2023-07-25 15:57:01
92
原创 874. 模拟行走机器人 模拟+哈希存储
题目是一个模拟,用一个点表示 (x,y,direction) 分别表示点的横纵坐标和方向。由于有障碍物,每次移动时,每移动一步,就查看当前的(x,y)坐标是否有障碍物,如果有就停止。机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续尝试进行该路线的其余部分。3. 向东移动 1 个单位,然后被位于 (2, 4) 的障碍物阻挡,机器人停在 (1, 4)距离原点最远的是 (3, 4) ,距离为 32 + 42 = 25。1. 向北移动 4 个单位,到达 (0, 4)
2023-07-19 16:38:39
916
原创 2559. 统计范围内的元音字符串数
输入:words = ["aba","bcb","ece","aa","e"], queries = [[0,2],[1,4],[1,1]]输入:words = ["a","e","i"], queries = [[0,2],[0,1],[2,2]]解释:以元音开头和结尾的字符串是 "aba"、"ece"、"aa" 和 "e"。查询 [1,4] 结果为 3(字符串 "ece"、"aa"、"e")。查询 [0,2] 结果为 2(字符串 "aba" 和 "ece")。输出:[2,3,0]输出:[3,2,1]
2023-06-02 15:20:04
617
原创 BatchNormalization
本文仅介绍BatchNormalization的理解,对于原理部分,网上博客资料很详细. 在做图像的神经网络训练时,我们往往每次给神经网络喂食一个batch的数据,当然这些数据指的是一个个的image或者feature map.比如我们batch_size=32,即每次处理32张image或者 feature map.而这一个batch的数据的不能反映出该batch的分布情况,需要将其映射到某个区间上,以反映样本集的分布,这时候就需要使用normalization对数据进行处理.可以参考下面图片理解.使用了
2023-03-28 20:44:45
2342
1
原创 tensor.squeeze函数和tensor.unsqueeze函数的使用
tensor.squeeze 和 tensor.unsqueeze函数使用.
2023-03-04 11:28:14
2104
原创 Pytorch运行错误: groups=1, weight of size [8, 1, 3, 3], expected input[1, 3, 512, 512] to have 1 channel
groups=1, weight of size [8, 1, 3, 3], expected input[1, 3, 512, 512] to have 1 channels, but got 3 channels instead 错误解决。
2023-03-03 12:55:17
5781
原创 Pytorch实战[实现对图像分类]
实现Pytorch完成类别识别Object基本掌握使用pytorch框架进行神经网络训练任务使用Pycharm,Google Colab完成代码编写本次实验只是来熟悉一下训练的流程,因此模型比较简单1. 编写代码数据集介绍 CIFAR-10数据集包含6000张大小是(32,32)的图片数据,有10个类别。训练集有5000张,测试集1000张。数据读取以及数据加载# 创建一个transformtransform = torchvision.transforms.Compose([
2022-05-25 20:04:39
3682
3
处理机调度.rar
2019-07-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人