- 博客(351)
- 资源 (1)
- 收藏
- 关注
原创 【论文精读】……ConvNeXt……(CNN和Transformer打起来了,A ConvNet for the 2020s)
论文下载地址:https://arxiv.org/pdf/2201.03545.pdf在这篇文章之前,CV领域被Transformer给刷榜了,什么Vit啊 Swim啊各种的Transformer的模型,这个作者写这篇文章 ,题目起的真的刚,20年代的卷积网络,就是想告诉你们,如今这个被Transformer占领的时代,我们CNN要重回第一。之前的Vit或者Swim什么的都是要完全抛弃CNN,并且模型出来之后也证实了,抛弃CNN之后模型精准度等直接冲到第一了。我估计CNN阵营的大佬们看了之后坐不住了,直接发
2022-06-13 14:22:48 1417 1
原创 【Transformer 论文精读】……Swin Transformer……(Hierarchical Vision Transformer using Shifted Windows)
论文用的是2021 8月17日的版本。Swin Transformer是ICCV 2021的最佳论文,这一篇论文是继Vit之后的Transformer在CV领域的巅峰之作。在paperwithcode上可以看到,SwinV2版本已经将coco数据集的精确度刷到了63.1%,而卷积系列还在50%+。Swin很可能引领之后的CV领域。这是基于Vit的一篇论文,可以看一下我之前的Vit阅读笔记:作者在摘要中说他提出了一个Swin Transformer的模型,可以当backbone。之前在Vit的结尾,Vit的作
2022-06-10 18:56:59 1807 3
原创 机器学习实战(入门级) ------ Kaggle 泰坦尼克号幸存者预测 (随机森林,KNN,SVM)
文章目录前言数据集介绍gender_submision.csv:train.csv:test.csv数据清洗数据预处理缺失值填充数据优化前言关于kaggle:就是一个面向机器学习和数据科学打比赛的地方,根据精度有排行榜,会有企业在里面,你要是解决了企业发布的项目,还会有奖金啥的。我们没那么强,就利用他的数据集和项目来做练习吧。先下载一下泰坦尼克号的数据集。kaggle官网下载地址:https://www.kaggle.com/competitions/titanic/data浏览kaggle
2022-04-08 17:01:38 9996 3
原创 yolov5 + pyqt5 口罩识别系统实战 (yolov5、pyqt5 快速入门 ,大作业项目)
文章适合yolov5 pyqt5快速入门。本项目适合交大作业的小伙伴们~稍加改动可作为 ,计算机毕业设计项目。
2022-02-22 20:05:32 19117 34
原创 Pytorch---- CIFAR10实战(训练集+测试集+验证集)完整版,逐行注释-----学习笔记
文章目录CIFAR10数据集准备、加载搭建神经网络损失函数和优化器训练集测试集关于argmax:使用tensorboard可视化训练过程。完整代码(训练集+测试集):程序结果:验证集完整代码(验证集):CIFAR10数据集准备、加载解释一下里面的参数 root=数据放在哪。 train=是否为训练集 。 download=是否去网上下载。里面的那个 transform 就是转换数据类型为Tensor类型。准备一个测试集 一个训练集 自动从网上下载好。 大概160MB左右。图片大小是32*32的
2021-12-14 18:47:19 40780 27
原创 Pytorch----池化层(平均值池化、最大值池化、自适应最大值池化)--入门级小实例(逐行注释)---学习笔记
文章目录最大值池化层平均值池化层自适应平均值池化层代码实现还是用[上次的小实例] ,这次加入三种池化层做练习。(https://blog.csdn.net/qq_38737428/article/details/121523145)我之前以为池化层也叫下采样,但这样说并不严格,只是大家都这么说,我刚知道,其实采样层包含池化层。某种卷积层也叫采样层。最大值池化层选择每个小区域的最大值作为特征放到结果矩阵,像下面这样。maxpool = nn.MaxPool2d(2,stride=2) # 定义池化
2021-12-07 22:41:46 26293 1
原创 Pytorch -----多分类问题 (Softmax Classifier)原理和代码实现,损失函数NLLLoss和CrossEntropyLossr的用法和区别。
之前的分类都是只有两个分类,是或者不是。今天学一下多分类问题,比如下面这个图。识别这个图中的数字,当输出结果的时候 有 0-9 十个分类结果。比如第一个数字5,经过训练输出可能是 P(Y=5) = 0.9 ,即理解为等于5的概率是90%。但这样有一个问题,如果这个数字特别模糊,可能出现的情况是P(Y=1) = 0.8 ,P(Y=2) = 0.8 , P(Y=5) = 0.9 ,也就是说,这个数字是1的概率是0.8,是2的概率也是0.8,是5的概率是0.9。这样的结果并不利于训练结果的分类。所以我
2021-11-12 22:21:38 4936
原创 Python3 ---关于numpy的方法总结笔记。
一. 使用numpy生成数组:1.arange和range的用法是一样的,可以写start end 和step。2.生成的数据类型都是 numpy.ndarrayimport numpy as npres = np.array([0,1,2,3,4,5,6,7,8,9])res_1 = np.array(range(10))res_2 = np.arange(10)三种方法输出都是: [0 1 2 3 4 5 6 7 8 9]二. 查看数据类型1.type是查看变量的类型2.dt
2021-06-24 19:18:05 2959 2
原创 leetcode(力扣) 89. 格雷编码 (规律题)
0,2,3,1] 也是一个有效的格雷码序列,其二进制表示是 [00,10,11,01]。每个整数都在范围 [0, 2n - 1] 内(含 0 和 2n - 1)[0,1,3,2] 的二进制表示是 [00,01,11,10]。给你一个整数 n ,返回任一有效的 n 位格雷码序列。00 和 01 有一位不同- 01 和 11 有一位不同。11 和 10 有一位不同- 10 和 00 有一位不同。第一个 和 最后一个 整数的二进制表示 恰好一位不同。11 和 01 有一位不同。输出:[0,1,3,2]
2023-12-16 16:59:21 622
原创 leetcode (力扣) 154. 寻找旋转排序数组中的最小值 I+II (二分法)
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]]。对于以下两示例,当 i=0,j=4,m=2 时,有 nums[m] > nums[i] ,而结果不同。若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]例子:nums = [4,5,6,7,0,1,2,3]输入:nums = [2,2,2,0,1]
2023-12-03 15:35:29 556
原创 leetcode (力扣) 97. 交错字符串(动态规划)
dp的第二行和第二列也需要初始化,就直接比较当前s1或者s2字符和当前的s3字符是否相等,如果相等,看看前一个dp位置是否也是True,如果是则当前dp位置也是True。交错 是 s1 + t1 + s2 + t2 + s3 + t3 + …或者 t1 + s1 + t2 + s2 + t3 + s3 + …dp[i][j] 表示s1前i个字符和s2前j个字符能否构成s3的前i+j个字符。由于需要s1+s2来构成s3,所以设想子问题s3的最后一个字符是由谁构成的。必有:dp [0][0] = True。
2023-11-23 18:09:02 429
原创 leetcode (力扣) 201. 数字范围按位与 (位运算)
给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。这样思路就简单了,两个数的二进制不断往右移动,当两者相等的时候,停止移动。记t为移动的次数,t就是两个数的二进制不同的位数。而一个数不断加1变成另一个数的过程中,实际上每一位都有变成0的情况。这里可以回想一下二进制与操作,两个数的‘’与‘’只要有0则为0。输入:left = 5, right = 7。输入:left = 0, right = 0。
2023-11-18 18:27:22 421
原创 leetcode(力扣) 51. N 皇后 (回溯,纸老虎题)
文章目录题目描述思路分析对于问题1对于问题2完整代码题目描述按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。输入:n = 4输出:[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“
2023-11-12 15:38:29 350
原创 leetcode(力扣) 207. 课程表1+2(图的构造与遍历,清晰思路,完整模拟)
chudu = [[1, 2], [3], [3], []] 即 i号课的出度指向 chudu[i]假设有:[[3, 0], [3, 1], [4, 1], [4, 2], [5, 3], [5, 4]]输入:numCourses = 2, prerequisites = [[1,0],[0,1]]例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1。比如对于:[[1,0],[2,0],[3,1],[3,2]]后面就简单了,比如有[1,2] ,图表示就是2->1。
2023-11-10 15:58:43 406
原创 leetcode(力扣) 224. 基本计算器(清晰思路,完整模拟)
2.变量num,记录当前整体数字,因为要遍历s,所以如果有152+1 这种,那么遍历的指针就应该是1,5,2,+,1。其实这个初始化方法,可以理解成 s = 0+(1+(4+5+2)-3)+(6+8),在最前面多了一个0+3.变量sign,一个符号变量,1表示为加号,-1表示为减号。输入:s = “(1+(4+5+2)-3)+(6+8)”例子:s = “(1+(4+5+2)-3)+(6+8)”例子:s = “(1+(4+5+2)-3)+(6+8)”4.变量stack。输入:s = " 2-1 + 2 "
2023-11-01 01:01:46 979
原创 leetcode(力扣) 128. 最长连续序列(哈希)
i = 3,此时 3的前一个数2没在哈希表里,所以left依旧是0.而3的后一个数为4,4在哈希表里,所以此时right=hs[4]=1。那么当前值3的最大连续区间left+right+1 = 2,哈希表= {100:1 , 4:1 , 200:1 , 1:1 , 3:2}。right = 2,当前2的最大连续区间 = 4,所以哈希表= {100:1 , 4:1 , 200:1 , 1:1 , 3:2 , 2:4}所以当前哈希表={100:1}输入:nums = [0,3,7,2,5,8,4,6,0,1]
2023-10-23 17:35:55 280
原创 leetcode(力扣) 221. 最大正方形(动态规划)
输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]也就是说,这三部分联合到一起,再加上当前遍历的右下角这一个小格子,才算是一个新的正方形,这也是为什么要取三者中的min值了,这也意味着,只有三个条件相等,边长才能变大。含义为若当前位置为111,则此处可以构成的最大正方形的边长,是其正上方,左侧,和左上界三者共同约束的,且为三者中的最小值加1。
2023-10-11 15:05:20 523
原创 面试金典--面试题 17.21. 直方图的水量(不困难的困难题)
left不断向右靠近,在第一层left=1时,left和right在输入数组height中的数值都大于当前遍历的层数high。第二层,high = 2,left一直向右移动到left = 3,right向左移动到right = 10。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的直方图,在这种情况下,可以接 6 个单位的水(蓝色部分表示水)。按照所给示例:height=[0,1,0,2,1,0,1,3,2,1,2,1]输入: [0,1,0,2,1,0,1,3,2,1,2,1]
2023-10-09 16:50:07 205
原创 面试金典--面试题 17.19. 消失的两个数字
我们找到缺失数组和的中间值,即 t = su//2。根据题意也知,缺失的两个数字不一样。那么缺失的两个数字必然在t的两侧,或者其中一个和t相等。直接找到nums里所有小于等于t的数字的和temp。然后再用一次等差数列减去temp,就能得到一个消失的数字了。给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。根据题意,给定 nums 的长度为 n,则补全之后的数组长度为。所以有补全之后的数组总和-未补全的数组总和=缺失的两个数字和。那么此时就转变成求 消失的一个数字 了。
2023-10-08 16:03:28 254
原创 面试金典--面试题 17.15. 最长单词(递归)
给定一组单词words,编写一个程序,找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。比如,按住dogwalker,遍历剩余的单词列表:[ ‘banana’, ‘walker’, ‘nana’, ‘walk’, ‘cat’, ‘dog’]。输入: [“cat”,“banana”,“dog”,“nana”,“walk”,“walker”,“dogwalker”]实例:[“cat”,“banana”,“dog”,“nana”,“walk”,“walker”,“dogwalker”]
2023-10-07 15:57:29 270
原创 面试金典--面试题 16.18. 模式匹配 (前缀和+哈希表)
输入: [“A”,“1”,“B”,“C”,“D”,“2”,“3”,“4”,“E”,“5”,“F”,“G”,“6”,“7”,“H”,“I”,“J”,“K”,“L”,“M”]比如: [“A”,“1”,“B”,“C”,“D”,“2”,“3”,“4”,“E”,“5”,“F”,“G”,“6”,“7”,“H”,“I”,“J”,“K”,“L”,“M”]转化为[1, -1, 1, 1, 1, -1, -1, -1, 1, -1, 1, 1, -1, -1, 1, 1, 1, 1, 1, 1]输入: [“A”,“A”]
2023-10-05 14:26:49 210
原创 面试金典--面试题 16.18. 模式匹配 (正则)
pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。输入: pattern = “abba”, value = “dogcatcatdog”输入: pattern = “aaaa”, value = “dogcatcatdog”这里分情况讨论就行了,如果m为空,则说明匹配失败。
2023-10-02 15:41:52 232
原创 剑指 Offer 66. 构建乘积数组
给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…在设置一个存答案的数组res,自然有 :res[i] = left [i] * right[i]对于i位的数来讲,其值等于0到i-1的乘积,乘以 i+1到末尾的乘积。则其left = [1, 1,2, 6, 24]比如示例: [1,2,3,4,5]
2023-08-19 13:22:46 114
原创 剑指 Offer 62. 圆圈中最后剩下的数字 (这题纯无语)
例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。第一轮反推,补上 m 个位置,然后模上当时的数组大小 555,位置是(0 + 3) % 5 = 3。第三轮反推,补上 m 个位置,然后模上当时的数组大小 3,位置是(1 + 3) % 3 = 1。图中的绿色的线指的是新的一轮的开头是怎么指定的,每次都是固定地向前移位 m 个位置。然后我们从最后剩下的 3 倒着看,我们可以反向推出这个数字在之前每个轮次的位置。
2023-08-18 14:26:53 101
原创 剑指 Offer 60. n个骰子的点数(动态规划)
简单说一下题目,扔1次骰子,则可能的点数,1,2 ,3,4, 5,6。所以当扔骰子数n=1时,应该返回[1/6,1/6,1/6,1/6,1/6,1/6]递推公式:dp[i][j] = dp[i-1][j-1]+ dp[i-1][j-2]+ dp[i-1][j-3]…为了方便理解,数组下标为0时的情况作废,数组下标为1就代表n=1 就是第一次投掷的情况。当n=2的时候,总和可能性为[2,3,4,5,6,7,8,9,10,11,12]当只有一个骰子n=1时候,毫无疑问,总和可能性为[1,2,3,4,5,6]
2023-08-17 18:05:13 258
原创 剑指 Offer 59 - II. 队列的最大值 (单调队列)
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。题目要求了时间复杂度是o1,压数,取数都是o1没问题,问题就出在读取最大值这块,正常来讲每次读取最大值都需要扫描列表,时间复杂度肯定On了。直接举例秒懂: 当前要操作的函数是 [压数1,压数2,取最大值,弹数]单调队列的练习题, 主要是实现三个函数,读最大值,压数,取数。建立两个队列,一个是普通队列A,一个是维护最大值的单调队列B。
2023-08-17 13:59:14 118
原创 剑指 Offer 56 - I. 数组中数字出现的次数 (看不懂你来P城和我刚枪)
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。之前有做个一个题,是在数组中找到仅仅出现了一次的数。那个题的思路是用异或。即 A和A异或 结果为0。ABABC 五个数异或,则结果为C。本题是 一个数组里有两个只出现了一次的数,那么是否可以将整个数组分组,让两个只出现了一次的数分别在两个分组里?题目要求了时间和空间复杂度,就不能暴力和哈希表了。
2023-08-15 15:53:09 84
原创 剑指 Offer 49. 丑数 (动态规划)
因此,可设置指针 a,b,c 指向首个丑数(即 1 ),循环根据递推公式得到下个丑数,并每轮将对应指针执行 +1 即可。我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。且丑数需要从小到大排列,所以也就是说,当前丑数‘x‘乘以2或3或5 中的最小值就是下一个丑数。3*5,当某个数被使用过了,则对应指针就往后挪动,表示已经考虑过该数的对应乘积了。首先递推思想,某个丑数一定是由比他小的丑数 乘以2或3或5得到的。这块有一个细节需要注意,比如 2和3这俩分别由a和b指着,2。
2023-08-14 14:26:02 179
原创 剑指 Offer 46. 把数字翻译成字符串(动态规划)
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。dp[0]从题意无法判断出来,只能看递推公式了dp[2] = dp[1]+dp[0]。例子nums = ‘123’中,dp[2]为2,所以dp[0]自然就是1了。dp[1]=1,这个没啥说的,只有一个数,自然只有一种方法。dp[i] 表示以i为结尾的字符串最多有多少种翻译。那么当遍历到dp[2]时,
2023-08-13 17:34:37 176
原创 剑指 Offer 41. 数据流中的中位数(大根堆与小根堆)
如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。这题直接暴力思想,每次加入一个数都存到res数组里,要求中位数的时候,直接排序一遍res,然后取中间值就行了, 不过这样时间复杂度很高,超时。python的heapq里只有大根堆的方法,小根堆的话,直接在操作前面加上负号就行了。A为小根堆,存的都是较大的那一半值,所以A堆顶就是 较大值那一半里的最小值。B为大根堆,同理,B堆顶是较小值那一半里的最大值。
2023-08-10 16:50:56 211
原创 剑指 Offer 37. 序列化二叉树
通常使用的前序、中序、后序、层序遍历记录的二叉树的信息不完整,即唯一的输出序列可能对应着多种二叉树可能性。因此,序列化的字符串应携带 完整的二叉树信息。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。vals[i] 的值是否为null,若为null就不构造子树,i 继续往后挪。A的功能:给树的root,输出str类型的层次遍历结果。B的功能:给str类型的层次遍历结果,构造树。为null的时候,i往后挪,不做其余操作。
2023-08-09 16:12:43 269
原创 剑指 Offer 36. 二叉搜索树与双向链表
要求不能创建任何新的节点,只能调整树中节点指针的指向。每次处理完要让pre移动到cur的节点,因为后面cur要移动到一下个节点了,pre自然就又是cur的前一个节点了。再设置一个pre指针,指向cur的前一个节点,方便两者互相设置链表指向。所以当pre为空的时候,必然是初始情况,那么让head指向cur。当pre不为空的时候,pre和cur所指的两个节点互相建立链表。遍历的途中,给数之间加上指针,最后再加头尾指针就行了。指针会指向做左下角的节点,设这个指针是cur吧。2.在根节点处理的地方开始修改。
2023-08-09 15:04:51 192
原创 剑指 Offer 20. 表示数值的字符串 (正则 逐步分解)
先来一个简单的方法, 其实题目要求就是判断科学计数法是否符合规范,使用python的float转换,如果能转换成功则是合规的。先分析一下整体合规的式子:可有可无的正负号 + 小数或整数 + 可有可无的e + 可有可无的正负号 + 整数。:这一串主要是控制e以及后面的字符, 首先这一段是可有可无的,因为e本身就可有可无嘛,所以最后有一个。至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字。(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数。(可选)一个符号字符(‘+’ 或 ‘-’)
2023-08-04 15:35:02 602
原创 剑指 Offer 19. 正则表达式匹配(动态规划,清晰到爆)
dp[i][j] 表示s串到下标i-1,p串到下标j-1 时,两串是否可以匹配上。
2023-08-03 23:58:32 286
原创 剑指 Offer 16. 数值的整数次方 (快速幂)
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。5.对于输入的n为负数的情况,吧x变为倒数,然后n变为正数就可以继续算了。暴力会超时,标的中等难度,所以肯定不是直接for的。2.遍历temp的每一位数字,为1的地方进入循环。1.将n变为二进制,然后取反,结果记为temp。i),这里的‘i’就是temp为‘1’的下标。输入:x = 2.00000, n = 10。输入:x = 2.10000, n = 3。再看一遍题目,求x的n次幂。输出:1024.00000。输出:9.26100。
2023-08-02 17:36:12 478
原创 剑指 Offer 12. 矩阵中的路径(回溯 DFS)
输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。在回溯的过程中,如果遇到边界,则立即回退,遇到不符合单词的字符,也立即回退。显然需要当前遍历的格子下标i和j,还需要当前遍历的单词下标k。后面就是连续的三步,
2023-08-01 14:20:58 1041
原创 leetcode(力扣) 76. 最小覆盖子串 (滑动窗口,超详细问答版解析)
显然不会,因为哈希表本身就是记录所需元素的个数的,一开始,那些不需要的元素是没有进行初始化的,或者说初始化为0,遇到一个则变成-1。在第二步的时候,count为0了,虽然此时窗口内的长度已经覆盖了t,但是并不是要立即记录窗口的长度值。right不断往右的过程中,遇到字符先判断hs里该值对应的value是否大于0,如果大于0,则表示是我们需要的值,此时再让count减一。所以在判断何时终止左边界的时候就非常好想了,如果碰到左边界的值在哈希表中的value为0了,则说明这个左边界的值是必须需要的,此时终止。
2023-06-06 18:27:26 1250
原创 leetcode(力扣) 738. 单调递增的数字 (贪心)
例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]–,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。从后向前遍历不断寻找 下标 i 的值小于 i-1 的情况(不符合递增),则让 i 的值减1,然后让 i 后面的值都变成9(贪心原则)。举个例子,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。输入: n = 1234。
2022-11-12 00:11:02 410 2
原创 leetcode(力扣) 763. 划分字母区间
思路:从a开始遍历,a的最后一次出现的位置是8,如果从a到8这个位置之间的所有元素的最远位置都在8之内,则这就可以划分为一个区间。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。划分结果为 “ababcbaca”, “defegde”, “hijhklij”。比如下图第二个区间中的d最远距离为14,扫描到e的时候,最远距离更新为15.
2022-11-11 18:52:37 765
yolov5 训练好口罩数据
2022-02-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人