- 博客(99)
- 收藏
- 关注
原创 RabbitMQ + Spring Boot + Python的使用过程
需求:后端执行Pytorch框架下的模型,对输入图像的评估,得到一个分数。
2024-04-20 13:08:59
1358
3
原创 【打卡】牛客网:BM92 最长无重复子数组
BM71 最长上升子序列(一)BM73 最长回文子串BM77 最长的括号子串BM92 最长无重复子数组最长系列问题,基本用动态规划。BM92,用滑动窗口。
2024-01-15 22:41:17
697
原创 【打卡】牛客网:BM90 最小覆盖子串
BM65 最长公共子序列(二):找二者的相同部分,该部分对于二者可以不连续排列的(但是是有序的)。BM66 最长公共子串找二者的相同部分,该部分对于二者是的。本题:BM90 最小覆盖子串找s中包含t所有字符的部分,该部分对于s是的,对于t可以不连续排列(且可以没有顺序)。
2024-01-15 22:10:19
1222
原创 【打卡】牛客网:BM89 合并区间
逐个遍历,如果前一个右区间大于后一个左区间,就合并。时间复杂度o(n)。忽略了用例给出的数组是无序的,所以还需要对数组进行排序。
2024-01-15 13:29:37
523
原创 【打卡】牛客网:BM87 合并两个有序的数组
简单粗暴的方法是先合并、再排序。没有技术含量。此外,很容易想到是用归并方法。问题是对A[]从前往后赋值,会覆盖A[]中有用的数值。模板的巧妙之处是,从后往前赋值,完美避开覆盖问题。
2024-01-14 22:23:42
488
原创 【打卡】牛客网:BM85 验证IP地址
牛客网的测试用例很水,程序错了都能通过9个。(IPv4、IPv6没有分隔符连续的用例、IPv4没有前导“0”的用例)模板的split(),在while循环中,会把截取的字符串去掉,所以每次只需要截取前n个即可。我的split()函数写得稀烂,根据用例调试很久。模板的split()写得好一些。
2024-01-14 18:37:20
1202
原创 【打卡】牛客网:BM84 最长公共前缀
题目要求时间复杂度是o(n*len),说明可以遍历所有的字符。空间复杂度o(1),说明不能用字符串存储公共前缀,所以用下标来记录。调试过程:大概花了20min。我调试前的做法是,在while循环中,从后往前遍历,用的j--。但是没有考虑到第0个字符串长度很小的问题。所以改成了j++。
2024-01-14 00:16:39
443
原创 【打卡】牛客网:BM82 买卖股票的最好时机(三)
最后,取0、dp第2行、dp第4行三者最优值即可。dp第2行和dp第4行表示。需要决定第0天~第i天哪一天买入。进行第一次交易,该天不持有股票的前提下,利益最大是多少。进行第二次交易,该天不持有股票的前提下,利益最大是多少。进行第一次交易,该天持有股票的前提下,利益最大是多少。进行第二次交易,该天持有股票的前提下,利润最大是多少。所以不需要管dp第1行和dp第3行。dp第1行和dp第3行表示。这与BM80的dp第1行是一样的。这与BM80的dp第0行是一样的。所以,分析第i天时,所以,分析第i天时,
2024-01-13 23:36:33
1368
原创 【打卡】牛客网:BM81 买卖股票的最好时机(二)
与BM80 买卖股票的最好时机(一)的区别是,可以多次买,但是卖完才能再买。我的想法是,对于第i天的价格,j从第0天~第i-1天的价格遍历,即,【第j天买入、今天卖出的利润】+【第j-1天的利润】,遍历,并取最大。时间复杂度是o(n^2)。但是,我的想法出现的错误是:若第j-1天持有股,那么第j天不可以买;若不持有股,第j天可以买。我忽略了必须卖出才能买入。所以,必须记录第j-1天的状态是持有股,还是不持有股。但是是难实现的。
2024-01-12 22:38:06
485
原创 【打卡】牛客网:BM83 字符串变形
string s;//字符串//反转//字符数组//翻转此外,'A' 的ASCII码是65,'a' 的ASCII码是97。
2024-01-12 21:02:11
459
原创 【打卡】牛客网:BM80 买卖股票的最好时机(一)
我的想法是,这个题就是找最大差。两个递归是可以解决的,时间复杂度是o(n^2)。但是题目要求时间复杂度是o(n)。(今天的价格和历史最低价的差,prices[i]+dp[i-1][1])模板用了一个两行的dp数组,在一次for循环中,更新两行,是亮点。第二行记录截止到今天的历史最低价。感觉模板没有考虑n=0的情况。(dp[i-1][0])和。(dp[i-1][1])和。假如今天卖的最大利润。
2024-01-10 15:42:48
457
原创 【打卡】牛客网:BM79 打家劫舍(二)
dp.clear()会把dp的size变为0。assign和insert的对比://在pos位置插入n个elem数据,无返回值。//在pos位置插入[beg,end)区间的数据,无返回值dp.assign()赋值,会把dp之前的值覆盖。
2024-01-10 15:08:38
531
原创 【打卡】牛客网:BM76 正则表达式匹配
此外,pattern还有“.”的匹配方式。“.”必须考虑一个字符,所以与判断字符相同的过程一样,即在上述过程中判断条件中“我习惯把pattern放在列(n2的for循环放在外面),str放在行(n1的for循环放在里面)。模板的是dp[n1][n2],对于每一个str元素,遍历所有pattern元素。然后对于每一个pattern元素,遍历所有str元素。我的是dp[n2][n1]。
2024-01-09 21:32:43
797
原创 【打卡】牛客网:BM75 编辑距离(一)
删除和增加的效果是一样的。所以只考虑删除和替换。以下为我的dp初始化。(最前面的两个字母不同为1,相同为0)删除二者之一,即选择上方或者左方。(全部固定,难想到,难理解)替换,即选择左上角。
2024-01-09 16:00:42
614
原创 【打卡】牛客网:BM74 数字字符串转化成IP地址
看了一下BM22,很陌生,感觉刷题刷了也白刷。的题有点相似,都需要处理前导‘0’。递归时需要注意判断的条件。
2023-12-29 19:48:37
426
原创 【打卡】牛客网:BM39 序列化二叉树(调试很久)
资料:2 string用到的一些函数:// string转c的字符串数组// int转stringchar * 的长度比string多一个‘\0’,则为:注:本题需要判断最后一个‘\0’,所以模板用第二种方法。本题没涉及到,本题是char*转TreeNode4 C++ 单引号和双引号的区别:单引号是char字符型, 双引号是string字符串型5 &&在变量前是取地址,在定义函数里是引用传递6 string、char*、char**的区别,以及他们++表示的具体含义。
2023-12-10 22:43:37
77
原创 【打卡】牛客网:BM60 括号生成
size()//获取字符串长度insert()//插入字符串append()//插入字符串erase()//删除任意字符,时间复杂度O(n),n为字符串长度substr()//截取字符字串back()//获取最后一个字符pop_back()//删除最后一个字符,时间复杂度O(1)empty()//判断是否为空clear()//清空字符串。
2023-12-01 11:21:56
171
原创 【打卡】牛客网:BM59 N皇后问题
采用for循环里push的方法,结果会多出n个重复的策略方案。因为在for循环里push,需要在下一次递归里面判断长度和放入res,最终导致:倒数第二层已经是我们需要的答案了,但是在for循环会重复n次递归,在最后一层判断长度和放入res。①想自己定义结构体node,发现find函数太麻烦。看了眼模板,就用一个vector记录行号就行,索引自然而然就是列号。for循环外面push,就能解决重复答案的问题。还在想这和模拟差不多。后来才意识到,还得是递归啊。②想用for循环写(未通过)
2023-11-21 23:11:59
226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人