![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网
废柴申
热爱技术!
展开
-
OR63 删除公共字符
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”原创 2022-09-11 11:21:48 · 80 阅读 · 0 评论 -
JZ39 数组中出现次数超过一半的数字
JZ39 数组中出现次数超过一半的数字。原创 2022-09-11 10:37:10 · 76 阅读 · 0 评论 -
OR59 字符串中找出连续最长的数字串 - 题解
遍历字符串,使用tmp去记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了,则将数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到ret。个测试输入包含1个测试用例,一个字符串str,长度不超过255。读入一个字符串str,输出字符串str中的连续最长的数字串。输入:abcd12345ed125ss123456789。在一行内输出str中里连续最长的数字串。复制输出:123456789。原创 2022-09-11 10:12:38 · 170 阅读 · 0 评论 -
n进制转换 - 题解
本题思路很简单,首先想清楚原理:N进制数,每个进制位的值分别是X0*N^0,X1*N^1, X2*N^2.....,X0,X1,X2就是这些进制位的值,就是就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进入下一个进制位的计算。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)boolean flg = false;给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。原创 2022-09-11 09:50:16 · 236 阅读 · 0 评论 -
DD1 连续最大和 - 题解
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-09-11 08:42:46 · 73 阅读 · 0 评论 -
CM46 合法括号序列判断 - 题解
请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。原创 2022-09-10 11:22:17 · 129 阅读 · 0 评论 -
HJ108 求最小公倍数
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。数据范围:1 \le a,b \le 100000 \1≤a,b≤100000。//最小公倍数 = 两数之积除以最大公约数。输出A和B的最小公倍数。输入两个正整数A和B。原创 2022-09-10 10:58:06 · 129 阅读 · 0 评论 -
WY20 两种排序方法 - 题解
考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。输入第一行为字符串个数n(n ≤ 100) 接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成。考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically",2. 如果前k个字符相等(k为两个字符长度最小值),返回值两个字符串长度差值。原创 2022-09-10 10:26:13 · 76 阅读 · 0 评论 -
HJ91 走方格的方案数 - 牛客网
请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数)从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。数据范围: 1 \le n,m \le 8 \1≤n,m≤8。输入两个正整数n和m,用空格隔开。注:沿棋盘格之间的边缘线行走。原创 2022-09-10 09:33:57 · 293 阅读 · 0 评论 -
CM72 另类加法
计算当前 xx 和 yy 的进位:B= (A& B)原创 2022-09-09 19:37:30 · 126 阅读 · 0 评论 -
HJ86 求最大连续bit数
获取第i位的值: (n >> i) & 1。如果1连续,则计数累加,如果不连续,则从0开始计数。数据范围:数据组数:1\le t\le 5\1≤t≤5 ,1\le n\le 500000\1≤n≤500000。while (in.hasNextInt()) { // 注意 while 处理多个 case。求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。进阶:时间复杂度:O(logn)\O(logn) ,空间复杂度:O(1)\O(1)原创 2022-09-09 18:55:16 · 244 阅读 · 0 评论 -
CM24 最近公共祖先
将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。原创 2022-09-09 16:32:45 · 157 阅读 · 0 评论 -
HJ60 查找组成一个偶数最接近的两个素数 - 牛客网题解
本题首先需要判断素数,素数表示除过1和本身,不能被其它数整除。通过循环遍历来判断一个数是否为素数。最近的两个素数应该从最中间的位置开始向两边查找。任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。数据范围:输入的数据满足 4 \le n \le 1000 \4≤n≤1000。输入一个大于2的偶数。从小到大输出两个素数。原创 2022-09-09 15:11:04 · 106 阅读 · 0 评论 -
HJ73 计算日期到天数转换
用一个数组存放每月的累积天数{31,59, 90, 120, 151, 181, 212,243, 273, 304, 334, 365} 输入的日期天数=当月的天数 + 当月之前的累积天数 如果包含二月,再去判断是否为闰年,如果是闰年,再加1天即可。while (in.hasNextInt()) { // 注意 while 处理多个 case。进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(1)\O(1)输入一行,每行空格分割,分别是年,月,日。根据输入的日期,计算是这一年的第几天。原创 2022-09-09 13:19:51 · 220 阅读 · 0 评论 -
HJ62 查找输入整数二进制中1的个数
本题是计算一个数二进制表示中1的个数,通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。数据范围: 1 \le n \le 2^{31}-1 \1≤n≤231−1。输入一个正整数,计算它在二进制下的1的个数。5的二进制表示是101,有2个1。计算整数二进制中1的个数。原创 2022-09-09 10:56:40 · 279 阅读 · 0 评论 -
OR44 扑克牌大小
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子)(1)输入每手牌可能是个子,对子,顺子(连续5张),三个,炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER。请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。原创 2022-09-09 10:44:28 · 96 阅读 · 0 评论 -
HJ56 完全数计算 - 题解
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。while (in.hasNext()) { // 注意 while 处理多个 case。数据范围: 1 \le n \le 5 \times 10^{5} \1≤n≤5×105。完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。输入n,请输出n以内(含n)完全数的个数。原创 2022-09-09 10:18:12 · 209 阅读 · 0 评论 -
二叉树的镜像__牛客网题解
数据范围:二叉树的节点数 0≤n≤10000 \le n \le 10000≤n≤1000 , 二叉树每个节点的值 0≤val≤10000\le val \le 1000 0≤val≤1000。要求: 空间复杂度 O(n)O(n)O(n)。本题也有原地操作,即空间复杂度 O(1)O(1)O(1) 的解法,时间复杂度 O(n)O(n)O(n)操作给定的二叉树,将其变换为源二叉树的镜像。//处理根节点,交换左右节点。原创 2022-09-09 09:26:11 · 92 阅读 · 0 评论 -
HJ37 统计每个月兔子的总数
第n个月的兔子数量由两部分组成,一部分是上个月的兔子f(n-1),另一部是满足3个月大的兔子,会生一只兔子f(n-2)。所以第n个月兔子总数: f(n) = f(n - 1) + f(n - 2)。有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?数据范围:输入满足 1 \le n \le 31 \1≤n≤31。原创 2022-09-08 16:33:22 · 152 阅读 · 0 评论 -
HJ65 查找两个字符串a,b中的最长公共子串
本题需要用动态规划求解 dp[i][j]记录短字符串 s1 前 i 个字符和长字符串 s2 前 j 个字符的最长子串的长度,初始化所有值为 0。当 s1[i-1] = s2[j-1]时,dp[i][j] = dp[i - 1][j - 1] + 1,这里使用一个额外的值start 来记录最长子串在短字符串 s1 中出现的起始位置,maxlen记录当前最长子串的长度,当dp[i][j] >max 时,max = dp[i][j], 则start = i - max;查找两个字符串a,b中的最长公共子串。原创 2022-09-08 16:20:30 · 703 阅读 · 0 评论 -
HJ22 汽水瓶
输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1原创 2022-09-08 12:29:02 · 81 阅读 · 0 评论 -
HJ12 字符串反转
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)输入一行,为一个只包含小写字母的字符串。输出该字符串反转后的字符串。原创 2022-09-08 10:57:26 · 146 阅读 · 0 评论 -
WY24 洗牌 - 牛客网题解
首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。把这六张牌再次合成一组牌之后,我们按照从上往下的顺序看这组牌,就变成了序列1,4,2,5,3,6。对于每组数据,第一行两个数n,k(1 ≤ n,k ≤ 100),接下来有2n行个数a1,a2,...,a2n(1 ≤ ai ≤ 1000000000)。原创 2022-09-08 10:30:36 · 119 阅读 · 0 评论 -
HJ59 找出字符串中第一个只出现一次的字符
数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000。3.遍历字符数组,若该字符在count数组中对应的asc码位置计数为1;2.遍历字符数组,每次遍历到该字符, 在count数组中对应的asc码位置++输出第一个只出现一次的字符,如果不存在输出-1。找出字符串中第一个只出现一次的字符。1.创建count数组,用于计数。输入:asdfasdfo。原创 2022-09-07 21:41:03 · 264 阅读 · 0 评论 -
WY3 小易的升级之路 - 题解
小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3...bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;如果求余结果为0, 则b为所求结果.对于每组数据,第一行是两个整数n(1≤n原创 2022-09-07 19:45:24 · 113 阅读 · 0 评论 -
QQ2 微信红包
如果有 :map.put(gifts[i],map.get(gifts[i])+1);在存入之后判断key是否大于n/2,是的话返回gifts[i]. 如果都存完还没有返回,则返回0,说明没有超过一半的。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。数据范围: 1 \le n \le 1000 \1≤n≤1000 ,红包金额满足 1 \le gift_i \le 100000\1≤gifti≤100000。如果map中没有, map.put(gifts[i],1);原创 2022-09-07 14:36:27 · 122 阅读 · 0 评论 -
JD1 年终奖 - 题解
小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。假设最大价值是f(i,j),那么f(n)=max(f[i-1,j],f[i,j-1])+borad[i,j];第一行:f(0,j) = f(0, j - 1) + b(0, j)原创 2022-09-07 08:53:39 · 650 阅读 · 0 评论 -
数根 - 牛客网题解
数根可以通过把一个数的各个位上的数字加起来得到。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。再比如39,把3 和9 加起来得到12,由于12 不是一位数,因此还得把1 和2 加起来,最后得到3,这是一个一位数,因此3 是39 的数根。比如,对于24 来说,把2 和4 相加得到6,由于6 是一位数,因此6 是24 的数根。2. 循环对大于9的数字进行对10取余和整除操作,将两个结果进行相加得到树根。1. 接收字符串得到各个数字,并且每位求和(为了得到的数字不大于99)原创 2022-09-06 19:53:15 · 174 阅读 · 0 评论 -
[编程题]有假币 - 牛客网题解
居然有假币!现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!!可惜nowcoder 一不小心把它混进了一堆真币里面去了。只知道假币的重量比真币的质量要轻,给你一个天平(天平两端能容纳无限个硬币),请用最快的时间把那个可恶的假币找出来。1≤n≤2^30,输入0结束程序。最多要称几次一定能把那个假币找出来?示例1。原创 2022-09-06 08:09:57 · 419 阅读 · 0 评论 -
因子个数 - 牛客网
一个正整数可以分解成一个或多个数组的积。例如36=2*2*3*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。输入包括多组数据。每组数据仅有一个整数n (2≤n≤100000)。对应每个整数,输出其因子个数,每个结果占一行。示例1。原创 2022-09-05 18:20:02 · 195 阅读 · 0 评论 -
最难的问题 - 牛客网题解
NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都是大写的。密码中的字母与原文中的字母对应关系如下。密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z。原创 2022-09-05 15:36:35 · 340 阅读 · 0 评论 -
剪花布条 - 牛客网题解
一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?输入包含多组数据。每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。示例。原创 2022-09-04 20:25:45 · 307 阅读 · 0 评论 -
养兔子 - 牛客网题解
一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。前天的兔子:今天全部成熟,可以生产,所以前天的兔子数就是今天出生的兔子数。兔子会生产,所以今天的兔子数等于昨天的兔子数+前天的兔子数。若兔子不会生产,那么今天的兔子数和昨天相等。测试数据包括多组,每组一行,为整数n(1≤n≤90)。对应输出第n天有几只兔子(假设没有兔子死亡现象)。原创 2022-09-04 15:54:33 · 175 阅读 · 0 评论 -
收件人列表 - 牛客网
NowCoder每天要给许多客户写电子邮件。正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。热度指数:3184时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M。每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。紧接着n行,每一行包含一个收件人的姓名。姓名长度不超过16个字符。现在给你一组收件人姓名,请你帮他生成相应的收件人列表。对应每一组输入,输出一行收件人列表。原创 2022-09-04 11:27:07 · 151 阅读 · 0 评论 -
抄送列表 - 牛客网题解
NowCoder每天要处理许多邮件,但他并不是在收件人列表中,有时候只是被抄送。他认为这些抄送的邮件重要性比自己在收件人列表里的邮件低,因此他要过滤掉这些次要的邮件,优先处理重要的邮件。如果第二行的名字出现在收件人列表中,则输出“Ignore”,表示这封邮件不重要;”,表示这封邮件需要被优先处理。第一行抄送列表,姓名之间用一个逗号隔开。如果姓名中包含空格或逗号,则姓名包含在双引号里。第二行只包含一个姓名,是待查找的用户的名字(姓名要完全匹配)。现在给你一串抄送列表,请你判断目标用户是否在抄送列表中。原创 2022-09-04 10:46:38 · 207 阅读 · 0 评论 -
[编程题]mkdir - 牛客网题解
例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。现在给你一些需要创建的文件夹目录,请你帮忙生成相应的“mkdir -p”命令。对应每一组数据,输出相应的、按照字典顺序排序的“mkdir -p”命令。每组数据第一行为一个正整数n(1≤n≤1024)。原创 2022-09-03 14:25:26 · 135 阅读 · 0 评论 -
[编程题]数据库连接池 - 牛客网题解
Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。紧接着n行,每行包含一个请求编号id(A、B、C……输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量。现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接。对应每一组数据,输出连接池最多需要创建多少个连接。原创 2022-09-03 09:54:43 · 163 阅读 · 0 评论 -
[编程题]蘑菇阵 - 牛客网题解
现在有两个好友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)处有一个蘑菇。原创 2022-09-02 16:25:52 · 300 阅读 · 0 评论 -
【编程题】红与黑 - 牛客网题解
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。每组数据第一行是两个整数 m 和 n(1≤m, n≤20)。紧接着 m 行,每行包括 n 个字符。3. “@”:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。对应每组数据,输出总共能够到达多少块黑色的瓷砖。1. “.”:黑色的瓷砖;2. “#”:白色的瓷砖;原创 2022-09-02 09:59:24 · 723 阅读 · 0 评论 -
最长上升子序列 - 牛客网题解
总结一下,d(i) 就是找以A[ i ]结尾的,在A[ i ]之前的最长上升子序列+1,即前 i 个数的 LIS 长度 + 1。例如队伍的身高数据是(1、7、3、5、9、4、8),其中依次递增的子序列有(1、7),(1、3、5、9),(1、3、4、8)等,其中最长的长度为4。前9个数 9前面有2 5 6 8小于9 d(9)=d(8)+1=5 子序列为2 5 6 8 9。前3个数 在1前面没有比1更小的,1自身组成长度为1的子序列 d(3)=1 子序列为1。前1个数 d(1)=1 子序列为2;...原创 2022-08-31 15:51:31 · 109 阅读 · 0 评论