我是小小做题酱
文章平均质量分 65
简单收录一些牛客、力扣刷过的题(╬ ̄皿 ̄)=○
小熊爱吃软糖吖
热爱可抵岁月漫长,温柔可挡艰难时光
展开
-
【Java版oj】day38红与黑、蘑菇阵
现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?第一行N,M,K(1 ≤ N,M ≤ 20, k ≤ 100),N,M为草地大小,接下来K行,每行两个整数x,y,代表(x,y)处有一个蘑菇。原创 2023-04-18 17:50:16 · 300 阅读 · 10 评论 -
【Java版oj】day37数据库连接池、mkdir
例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量。原创 2023-04-18 17:37:55 · 425 阅读 · 2 评论 -
【Java版oj】day36Rational Arithmetic、Pre-Post
注意,所有有理数都必须是最简单的形式“k a/b”,其中k是整数部分,而a/b是最简单的分数部分。每个实例将由m s1 s2形式的一行组成,表示树是m-ary树,s1是前序遍历,s2是后序遍历。数据结构类中的一个常见问题是,当给定二叉树的中序遍历和后序遍历时,如何找到二叉树的前序遍历。然而,当给定树的前序遍历和后序遍历时,通常无法确定树的序遍历。对于每个问题实例,您应该输出一行,其中包含可能的树的数量,这将导致实例的前序和后序遍历。对于两个有理数,你的任务是实现基本的算法,即计算它们的和、差,原创 2023-04-18 17:18:40 · 388 阅读 · 2 评论 -
【Java版oj】day35年会抽奖、抄送列表
其次:n个人抽到不是自己的序列个数。假设第一个人抽到的不是自己的个数;假设第二个人这个时候拿到了第一个人的名字,那么对于第二个人的名字有两种情况:第一种:第二个人的名字是被第一个人拿到了,也就是甲和乙互相拿了对方的名字,那么对于其他的n-1个人来说互相拿错是一个规模n-2的子问题;第二种:第二个人的名字没有被第一个人拿到,则剩下的问题是规模n-1的子问题。原创 2023-04-18 16:33:22 · 601 阅读 · 2 评论 -
【Java版oj】day34收件人列表、养兔子
正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。这道题其实就是判断每一个收件人字符串中有没有逗号或者空格,如果有就为其加上“”,我们可以每次输入完一个收件人字符串就对其进行一次处理。每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。紧接着n行,每一行包含一个收件人的姓名。这到题就是求斐波那契数列,注意数据范围。测试数据包括多组,每组一行,为整数n(1≤n≤90)。对应每一组输入,输出一行收件人列表。原创 2023-04-13 16:39:44 · 472 阅读 · 6 评论 -
【Java版oj】day32淘宝网店、斐波那契凤尾
对于开始年和结束年这种可能不是完整的一年,我们还需要判断是不是同一个月,如果是同一个月,就用结束日减去开始日则算出天数;开始月是用这个的总天数减去开始月的日期,结束月就是结束月的日期。第一点不能超过数据范围,所以我们在进行加法的时候根据题目要求直接取最后六位,因为是加法,所以取六位相加和所有数相加的结果后六位是没有影响的。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。中间完整的一年,判断每一年是否闰年,如果是闰年,就计算1月1日到12月31日这段时间的收益。原创 2023-04-12 21:06:43 · 722 阅读 · 3 评论 -
【Java版oj】day33剪花布条、客似云来
第二点不能超过运行时间,运行时间很小,肯定不能用递归。每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。这道题可以用快慢指针,如果快慢指针指向的字符串中包含目标字符串,则将计数+1,然后改变快慢指针的位置,前面寻找过的部分不再寻找。一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。原创 2023-04-12 21:21:19 · 414 阅读 · 3 评论 -
【Java版oj】day31美国节日、分解因数
世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一;:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)1582年10月4日后:w = (d + 1+ 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六。原创 2023-04-10 18:55:19 · 465 阅读 · 17 评论 -
【Java版oj】day30最难的问题、因子个数
其实这道题其实可以很简单。从最小因子2到数字的最大因子数即数字的平方根开始判断是否能够取余,可以则循环取余直到取余不为0,因子个数+1;最终整除了各个因子数之后剩余的数字不为1则本身也是一个因子,因此因子数+1。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都是大写的。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。原创 2023-04-10 18:22:01 · 327 阅读 · 8 评论 -
【Java版oj】day29求正数数组的最小不可组成和、有假币
如果前两份重量是一样,则假币在第三份中,这样可以除去2/3的硬币;例如数组{3,2,4},可能的集合为{3},{2},{4},{3,2},{3,4},{2,4},{3,2,4}(不包含空集)。得到的和经过排序为2,3,4,5,6,7,9。对于 4个硬币,称量 2次,先分成(2,2,0),第一次称量前两份(2,2),如果重量不一样,再次求出判断另外2个硬币需要称量的次数。对于 6个硬币,称量 2次,先分成(2,2,2),第一次称量前两份(2,2),如果重量不一样,再次判断求出另外2个硬币需要称量的次数。原创 2023-04-10 09:30:00 · 373 阅读 · 3 评论 -
【Java版oj】day28反转部分单向链表、猴子分桃
因为每次分5堆都会多出来1个,所以我们借4个桃子,这样每次都可以刚好分成5堆并且,每次给老猴子的桃子都不在我们借出的那4个中,这样最后减掉4就可以得到结果。因为这里输入输出全是自己写的,所以我先定义了一个数组,将输入的所有值放入数组中,先进行部分反转,然后再把每个值装入结点中,并连接起来。第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。原创 2023-04-10 08:30:00 · 377 阅读 · 5 评论 -
【Java版oj】day27不用加减乘除做加法、三角形
求三角形的条件就是两边之和大于第三边,本题给出的数据范围真的超级大,关键在于对大正数的处理。输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。这道题的解析直接指路day09不用加号的加法。给定三条边,请你判断一下能不能组成一个三角形。原创 2023-04-09 17:36:39 · 525 阅读 · 6 评论 -
【Java版oj】day26跳台阶扩展问题、快到碗里来
小喵们很喜欢把自己装进容器里的(例如碗),但是要是碗的周长比喵的身长还短,它们就进不去了。现在告诉你它们的身长,和碗的半径,请判断一下能否到碗里去。一只青蛙一次可以跳上1级台阶,也可以跳上2级……求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。每组数据包含两个整数n (1≤n≤2^128) 和r (1≤r≤2^128),分别代表喵的身长和碗的半径。圆周率使用3.14。对应每一组数据,如果喵能装进碗里就输出“Yes”;这道题应该是一道入门题,就是求圆周长。原创 2023-04-09 17:22:14 · 350 阅读 · 2 评论 -
【Java版oj】day25星际密码、数根
表的规则是:n对应的值是矩阵X的n次方的左上角,如果这个数不足4位则用0填充,如果大于4位的则只输出最后4位。,可能有人读不懂题目,题目第一行输入的整数n,表示这个密码由n个矩阵的左上角组成的,就是说输出的结果有4*n位,每个密码有4位组成到一起。再比如39,把3 和9 加起来得到12,由于12 不是一位数,因此还得把1 和2 加起来,最后得到3,这是一个一位数,因此3 是39 的数根。比如,对于24 来说,把2 和4 相加得到6,由于6 是一位数,因此6 是24 的数根。这道题的本质就是求。原创 2023-04-09 16:49:03 · 857 阅读 · 4 评论 -
【Java版oj】day24洗牌、MP3光标位置
因为需要输出每页上的所有歌曲,所以需要start变量记录每页第一个歌曲的位置,index表示光标的位置。原创 2023-04-09 15:32:16 · 544 阅读 · 2 评论 -
【Java版oj】day22微信红包、编辑距离
F(i-1,j): w1[1,...,i-1]于w2[1,...,j]的编辑距离,删除w1[i]的字符--->F(i,j)F(i-1,j-1): w1[1,...,i-1]于w2[1,...,j-1]的编辑距离,如果w1[i]与w2[j]相同,F(i,j-1): w1[1,...,i]于w2[1,...,j-1]的编辑距离,增加一个字符--->F(i,j)不做任何操作,编辑距离不变,如果w1[i]与w2[j]不同,替换w1[i]的字符为w2[j]--->F(i,j),请返回所求红包的金额。原创 2023-04-02 16:19:46 · 176 阅读 · 7 评论 -
【Java版oj】day23年终奖、迷宫问题
一般很容易想到,将字符串转成数组,然后对每个字符进行交换。这道题和day19号的第二道本质上是一样的,甚至比那道题更简单, 使用动态规划去做。接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。输入一行,为一个只包含小写字母的字符串。输出一个整数,代表最大公共子串的长度。输入两个只包含小写字母的字符串。输出该字符串反转后的字符串。原创 2023-04-02 17:22:44 · 300 阅读 · 6 评论 -
【Java版oj】day21小易的升级之路、找出字符串中第一个只出现一次的字符
小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;,如果我们使用Map的话,他是有序的,内部会自动帮我们把字符按照字典序排序,而我们输入的字符串是无序的,如此一来就找不到谁是第一个只出现一次的字符。key表示每个不一样的字符,value表示该字符出现的次数。原创 2023-04-02 15:47:36 · 297 阅读 · 4 评论 -
【Java版oj】day19汽水瓶、查找两个字符串a,b中的最长公共子串
如果空瓶大于等于三就可以不断换汽水,换得的汽水数等于空瓶数/3,空瓶数等于换得的汽水数+不够换的空瓶数;如果空瓶数等于2,代表可以向老板借空瓶数,空瓶数加一,汽水数加一。样例 2 解释:用九个空瓶换三瓶汽水,剩四个空瓶再用三个空瓶换一瓶汽水,剩两个空瓶,向老板借一个空瓶再用三个空瓶换一瓶汽水喝完得一个空瓶还给老板。对较短串进行两层for循环,找出较短串中所有字符组合的可能,判断较长串是否包含这个子串,如果包含则与之前存下的最大值比较,看是否需要更新。对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。原创 2023-03-27 22:00:00 · 322 阅读 · 2 评论 -
【Java版oj】day18统计每个月兔子的总数、字符串通配符
第三种情况匹配多个字符:通配符字符不动,普通字符串往后走多位,直到普通字符与通配字符的下一位的普通字符(不是*)相等时返回。我们把每个月兔子数列出来,分别是1、1、2、3、5、8、13、21.......到这里其实结果已经出来了,这是一个斐波那契数列,后面的数等于前面两个数相加,这也是最简单的动态规划。返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false。返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false。,它与普通通配符差不多是一致的,一次也只能匹配一个字符;原创 2023-03-27 20:00:00 · 317 阅读 · 2 评论 -
【Java版oj】day16完全数计算、扑克牌大小
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子);输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4-joker JOKER。输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如 4 4 4 4-joker JOKER。有炸弹的,只要谁是王炸谁最大,四张炸弹的,哪一边是四张炸弹的哪一边大。这道题最简单的方式就是用。原创 2023-03-25 23:45:00 · 805 阅读 · 9 评论 -
【Java版oj】day15查找输入整数二进制中1的个数、手套
在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。首先为了使选择的左手手套最少,我们可以找出左手某种颜色手套数最少的那个,只要留下一个即可,就是+1。这是在除去某种颜色手套数为0的情况下,如果最小手套数是0,再+1就会出问题。其次如果左手某种颜色手套数为0,而右手对应的手套数不为0,我们就不能在右手手套中随意选择一个,因为可能选到左手没有的颜色。最后就是将总数-手套最小的数+2,+2的原因是在左手中选择要+1,在右手中选择也要+1。将不为0的手套数加入要取出的手套总数中。原创 2023-03-22 09:30:00 · 479 阅读 · 0 评论 -
【Java版oj】day14计算日期到天数转换、幸运的袋子
比如,序列[1,1,2,3,4]当我们选择1,1,2,3,4时,不满足幸运袋子的要求,我们回退上一层选择的1,1,2,3,这组序列满足题目要求,此时假定位置3的情况已经全部列完了,我们就需要删除位置3的数即add(1+1+2+3-3),mul(1*1*2*3/3),然后添加位置4看看是否符合题意,add(1+1+2+4),mul(1*1*2*4)。例如:如果袋子里面的球的号码是{1, 1, 2, 3},这个袋子就是幸运的,因为1 + 1 + 2 + 3 > 1 * 1 * 2 * 3。,跳出这一次的循环。原创 2023-03-21 10:07:14 · 563 阅读 · 7 评论 -
【Java版oj】day11最近公共祖先、求最大连续bit数
首先需要将十进制转化成二进制,并将二进制结果保存下来,我这里使用的是栈存储,可以保证得到的二进制顺序与实际的一致,其实也可以用StringBuffer类存储,无所谓顺序。得到二进制数的方法是,将该数不断除以2,得到余数,知道除数为0。将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。设计一个算法,返回a、b最近的公共祖先的编号。求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。其次求求解连续1的最长序列 ,使用。原创 2023-03-17 08:45:00 · 346 阅读 · 5 评论 -
【Java版oj】day13参数解析、跳石板
比如在命令行输入xcopy /s "C:\\program files" "d:\"时,参数仍然是4个,第3个参数应该是字符串C:\\program files,而不是C:\\program,注意输出参数时,需要将""去掉,引号不存在嵌套情况。这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。:快指针先在前走,慢指针在原地,当快指针遇到空格时,划分一个字符串。开始下一个字符串的划分。原创 2023-03-20 18:52:02 · 341 阅读 · 9 评论 -
【Java版oj】day12二进制插入、查找组成一个偶数最接近的两个素数
因为他保证n的第i位到第j位都是0,并且m的二进制位数不会超过(i-j),将n的第i位到第j位替换成m的二进制位,其实就是n加上m扩大(2^j)倍后的结果。给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。输入一个大于2的偶数。原创 2023-03-18 09:30:00 · 468 阅读 · 7 评论 -
【Java版oj】day10 井字棋、密码强度等级
代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)这题看似复杂,其实只要根据要求,一个一个去解决,还是很容易的。"#$%&'()*+,-./ (ASCII码:0x21~0x2F)10 分: 密码里的字母全都是小(大)写字母。>= 0: 非常弱(Very_Weak)原创 2023-03-16 11:00:00 · 987 阅读 · 5 评论 -
【Java版oj】day09不用加号的加法、走方格的方案数
请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。需要额外注意的是n、m表示的是格子数,而我们走的是边,所以n和m都要+1,即2*2的4个格子有3*3的边框。同理,当只有一列时,只能向下,走法也只有一种。本题可以使用&和^运算符,使用&得到两数相加的进位情况,使用^得到两数相加的结果(没有加进位)从(0,0)到达(1,0),(1,1),(2,1),...(n,m)的路径数。原创 2023-03-15 09:00:00 · 882 阅读 · 34 评论 -
【Java版oj】day08两种排序方法、最小公倍数
如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically", 如果根据长度排列而不是字典序排列输出"lengths", 如果两种方式都符合输出"both",否则输出"none"本题在我看来是对字符串String类型的考察,直接使用String的相关方法做是最简单的,当中需要注意的是在String类中有一个。正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。考拉有n个字符串字符串,任意两个字符串长度都是不同的。原创 2023-03-14 08:00:00 · 456 阅读 · 38 评论 -
【Java版oj】逆波兰表达式求值
该参数被解释为表示一个有符号的十进制 long,该值与用该参数作为参数的 parseLong(java.lang.String) 方法得到的值非常相似。遍历数组,将数字压入栈中,当遇见运算符时,就从栈中取出两个元素进行运算,并将结果压入栈中。将 string 参数解析为有符号十进制 long,字符串中的字符必须都是十进制数字。该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。两个整数之间的除法只保留整数部分。原创 2022-12-16 09:56:29 · 471 阅读 · 1 评论 -
【Java版oj】栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。3. pushV 的所有数字均不相同。原创 2022-12-16 08:39:55 · 138 阅读 · 0 评论 -
【Java版oj】day07括号匹配
本题用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。原创 2022-12-15 10:00:00 · 107 阅读 · 0 评论 -
【Java版oj】day07Fibonacci数列
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。本题可以通过先找到距离N最近的两个Fibonacci数,这两个数分别取自距离N的最近的左边一个数L和右边一个数,然后通过比较两个数到N的距离大小得出结果。输出一个最小的步数变为Fibonacci数"原创 2022-12-15 09:45:00 · 97 阅读 · 0 评论 -
【Java版oj】day06把字符串转换成整数
首先判断字符串为空或者为null的时候,返回值为0;接着从第二个字符判断是否为''0''~''9'',如果不在范围内就直接范围0,符合要求的数字字符就转换成数字;本题的关键是要处理几个关键边界条件:空字符串、 正负号处理、数字串中存在非法字符。将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为 0 或者字符串不是一个合法的数值则返回 0。①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0。进阶:空间复杂度空间复杂度 O(1) ,时间复杂度 O(n)原创 2022-12-14 10:45:00 · 267 阅读 · 0 评论 -
【Java版oj】day06不要二
本题的本质就是在二维数组中每个坐标去放蛋糕,一个坐标位置放了蛋糕,跟他欧几里得距离为2的位置不能放蛋糕,这个就是关键点。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为: ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根。二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根。输出一个最多可以放的蛋糕数。原创 2022-12-13 13:30:00 · 80 阅读 · 0 评论 -
【Java版oj】day05连续子序列
dp[i] 就是以数组下标为 i 的数做为结尾的最大子序列和,注意是以 i 为结尾,比如说现在有一个数组{6,-3,-2,7,-15,1,2,2},dp[2]就是以-2为结尾的,那么显然dp[3]的最大值就是1咯(6,-3,-2),dp[3]要以7结尾那么以7结尾的子序列最大和就是8(6,-3,-2,7)。第一行一个整数n(1原创 2022-12-13 12:00:00 · 124 阅读 · 0 评论 -
【Java版oj】day05统计回文
遍历str1,将str2 insert进入str1的每个位置,判断是否是回文,这里注意的是,判断回文的时候,直接将字符串逆置,看是否相同就好了。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。现将原字符串A添加进链表,然后从头开始遍历,将字符串B添加进链表,依次添加在字符串A首字符的前面,首字符的后面,第二个字符的后面.......最后一个字符的后面,每次添加后就进行回文比较、删除字符串B的操作、是否计数等操作。输出一个数字,表示把字符串B插入字符串A之后构成一个回文串的方法数。原创 2022-12-13 08:00:00 · 181 阅读 · 0 评论 -
【Java版oj】day04进制转化
将输入的十进制数M除以相应进制数(二进制就是2,十六进制就是16)取余(M%N),如果余数范围在10~16之间,就先将余数进行字符的转变再添加进链表,如果在0~9之间就直接添加进链表。这是本人一开始的思路,看似复杂,但运行的时间复杂度和方法二是一样的。其关键部分在于进制转换,如下图:将十进制转换成二进制,就是将十进制数除2取余数,得到的余数从后往前拼接得到二进制数,这里有一个栈的概念即为先进后出。无论是方法一还是方法二都需要注意关于M是0的情况,如果M是0,无论几进制数得到的结果都是0。原创 2022-12-12 14:30:00 · 100 阅读 · 0 评论 -
【Java版oj】day04计算糖果
将A - B,B - C,A + B,B + C定义为aDelb、bDelc、aAddb、bAddc。根据题目要求,A、B、C值为整数并且大于0,可以用%1==0来判断是否是整数。输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。如果不存在这样的整数A,B,C,则输出No。输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.原创 2022-12-12 14:00:00 · 110 阅读 · 0 评论 -
【Java版oj】day02倒置字符串
本题方法一先用split()方法,将整个字符串按照空格划分,然后使用for循环对每个划分出来的单词进行置换,并逐一和空格拼接起来。使用StringBuilder类,将String类转换StringBuilder类做字符串的拼接时空复杂度效率更佳。每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100。本题方法二将String类转换成字符数组,利用while循环和自己写的置换方法。本题解题思路很简单,只需要将每个单词单独置换,再将所有单词整个置换即可。原创 2022-12-10 07:30:00 · 648 阅读 · 0 评论