练习题
各大互联网公司在牛客网近年来面试的编程题
ly_1115
随遇而安,没必要逞强。
展开
-
【牛客网】数据库连接池
题目描述Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用。现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接。输入描述:输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000...原创 2019-07-23 10:33:20 · 436 阅读 · 0 评论 -
【牛客网】mkdir
题目描述工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。现在给你一些需要创建的文件夹目录,请你帮忙...原创 2019-07-23 10:21:46 · 503 阅读 · 0 评论 -
【牛客网】左右最值最大差
题目描述给定一个长度为N(N>1)的整型数组A,可以将A划分成左右两个部分,左部分A[0…K],右部分A[K+1…N-1],K可以取值的范围是[0,N-2]。求这么多划分方案中,左部分中的最大值减去右部分最大值的绝对值,最大是多少?给定整数数组A和数组的大小n,请返回题目所求的答案。测试样例:[2,7,3,1,1],5返回:6解题思路比较左右两端的最小值作为min,找到数组的最...原创 2019-07-20 18:55:03 · 434 阅读 · 0 评论 -
【牛客网】奇位数上都是奇数
题目描述给定一个长度不小于2的数组arr。 写一个函数调整arr,使arr中要么所有的偶数位上都是偶数,要么所有的奇数位上都是奇数上。 要求:如果数组长度为N,时间复杂度请达到O(N),额外空间复杂度请达到O(1),下标0,2,4,6…算作偶数位,下标1,3,5,7…算作奇数位,例如[1,2,3,4]调整为[2,1,4,3]即可解题思路这道题不是很难。但是!!!不知道为什么,我也看不懂输入...原创 2019-07-19 19:11:23 · 249 阅读 · 0 评论 -
【牛客网】简单错误记录
题目描述开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径。输入描述:一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。输出...原创 2019-07-19 18:56:58 · 1118 阅读 · 2 评论 -
【牛客网】乒乓球筐
题目描述nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该怎么办呢?输入描述:输入有多组数据。每组数据包含两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母。字符串长度不大于10000。输出描述:每一组输入对应一行输出:如果B盒...原创 2019-07-18 13:13:11 · 545 阅读 · 0 评论 -
【牛客网】骆驼命名法
题目描述链接:https://www.nowcoder.com/questionTerminal/aed1c7bbc2604e7c9661a2348b0541b8来源:牛客网从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:除首个单词以外,所有单词的首字母大写,例...原创 2019-07-17 12:52:02 · 699 阅读 · 2 评论 -
【牛客网】单词倒排(中级)
题目描述对字符串中的所有单词进行倒排。说明:1、每个单词是以26个大写或小写英文字母构成;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;输入描述:输入一行以空格来分隔的句子输出描述:输出句子的逆序示例输入I am a student...原创 2019-07-17 12:23:46 · 355 阅读 · 0 评论 -
【牛客网】电话号码
题目描述上图是一个电话的九宫格,如你所见一个数字对应一些字母,因此在国外企业喜欢把电话号码设计成与自己公司名字相对应。例如公司的Help Desk号码是4357,因为4对应H、3对应E、5对应L、7对应P,因此4357就是HELP。同理,TUT-GLOP就代表888-4567、310-GINO代表310-4466。NowCoder刚进入外企,并不习惯这样的命名方式,现在给你一串电话号码列表,...原创 2019-07-16 12:05:36 · 562 阅读 · 0 评论 -
【牛客网】斐波那契凤尾
题目描述NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位。输入描述:输入有多组数据。每组数据一行,包含一个整数n (1≤n≤100000)。输出描述:对应每一组输入,输出第n个斐波那契数的最后6位。示例输入...原创 2019-07-11 18:05:42 · 459 阅读 · 1 评论 -
【牛客网】剪花布条
题目描述一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?输入描述:输入包含多组数据。每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。输出描述:对应...原创 2019-07-11 17:33:38 · 533 阅读 · 1 评论 -
【牛客网】淘宝网店
题目描述NowCoder在淘宝上开了一家网店。他发现在月份为素数的时候,当月每天能赚1元;否则每天能赚2元。现在给你一段时间区间,请你帮他计算总收益有多少。输入描述:输入包含多组数据。每组数据包含两个日期from和to (2000-01-01 ≤ from ≤ to ≤ 2999-12-31)。日期用三个正整数表示,用空格隔开:year month day。输出描述:对应每一组数据...原创 2019-07-10 14:05:13 · 668 阅读 · 0 评论 -
【牛客网】 最难的问题 (最简单的解法)
题目描述NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提供给你的将军。消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并且消息原文的所有字母都是大写的。密码中的字母与原文中的字母对应关系如下。密...原创 2020-03-20 18:40:34 · 665 阅读 · 0 评论 -
【牛客网】洗牌
题目描述洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。接...原创 2019-07-02 20:14:09 · 413 阅读 · 0 评论 -
【牛客网】跳台阶 and 变态跳台阶
1. 跳台阶题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种方法?解题思路这种问题一般是有规律的,跳1级台阶,只有1种方法;跳2级台阶,有2种方法;跳3级台阶,有3种方法;跳4级台阶,有5种方法,依次下去…跳一个n级的台阶的方法数是跳n - 1级台阶的方法数与跳n - 2阶台阶的方法数的总和。这种思路可以用逆推去想,要跳上一个n级台阶,可以从...原创 2019-07-01 21:28:02 · 144 阅读 · 0 评论 -
【牛客网】统计每个月兔子的总数
题目描述有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔 子都不死,问每个月的兔子总数为多少?输入描述: 输入int型表示month输出描述: 输出兔子总数int型示例输入 9输出 34解题思路第n个月的兔子数量由两部分组成,一部分是上个月的兔子f(n-1),另一部是满足3个月大的兔子,会生一只兔子f(n2)。所以第n个月兔子总数...原创 2019-06-29 23:49:43 · 804 阅读 · 0 评论 -
【牛客网】不要二
题目描述二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一 块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根,小易想知道最多可以放多少块蛋糕在网格盒子里。输入描述: 每组数组包含网格长宽...原创 2019-06-29 23:35:38 · 271 阅读 · 4 评论 -
【牛客网】另类加法
题目描述请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。给定两个int A和B。请返回A+B的值示例输入 1,2输出 3解题思路本题可以通过位运算实现,具体实现如下:二进制位异或运算相当于对应位相加,不考虑进位 比如: 1 ^ 1 = 0 —> 1 + 1 = 0 (当前位值为0,进一位) 1 ^ 0 = 1 —> 1 + 0 = 1 (当前位值...原创 2019-06-29 22:28:26 · 338 阅读 · 0 评论 -
【牛客网】公共字符串计算
题目描述计算两个字符串的最大公共字串的长度,字符不区分大小写输入描述: 输入两个字符串输出描述: 输出一个整数示例:输入asdfaswerasdfaswer输出6解题思路因为字符不区分大小写,所以可以先将所有大写字符 +32 转换成小写字符。(其实牛客网中的这道题并没有考察到这个点)思路一:将较短的字符s1的长度作为外层循环,然后用s1中的每个字母在s2中查找,如果存在...原创 2019-06-28 19:53:41 · 490 阅读 · 0 评论 -
【牛客网】字符串反转
题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。输入描述: 输入N个字符输出描述: 输出该字符串反转后的字符串示例输入 abcd输出 dcba解题思路本题很简单,只要从中间隔开,交换字符串的首尾字符即可。当前的首尾字符可通过s[i] 和 s[s.size()-1-i] 确定。完整代码#include <iostream>#include...原创 2019-06-28 17:50:10 · 935 阅读 · 0 评论 -
【牛客网】查找两个字符串a,b中的最长公共子串
题目描述查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。输入描述:输入两个字符串输出描述: 返回重复出现的字符示例:输入abcdefghijklmnopabcsafjklmnopqrstuvw输出jklmnop解题思路暴力查找法:先比较两个字符串的长短,将较短的字符串存在s1中。再用两个循环对s1和s2分别进行遍历查找公共子串ret,将目...原创 2019-06-27 23:37:30 · 1174 阅读 · 0 评论 -
【牛客网】汽水瓶
原题链接https://www.nowcoder.com/practice/fe298c55694f4ed39e256170ff2c205f?tpId=37&&tqId=21245&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking题目描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。...原创 2019-06-25 18:22:41 · 303 阅读 · 0 评论 -
【牛客网】参数解析
题目描述在命令行输入如下命令:xcopy /s c:\ d:\,各个参数如下:参数1:命令字xcopy参数2:字符串/s参数3:字符串c:参数4: 字符串d:请编写一个参数解析程序,实现将命令行各个参数解析出来。解析规则:参数分隔符为空格对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” “...原创 2019-06-06 18:41:13 · 679 阅读 · 0 评论 -
【牛客网】查找组成一个偶数最接近的两个素数
题目描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对输入描述:输入一个偶数输出描述:输出两个素数示例输入:20输出:7 13解题思路本题首先需要判断素数,素数表示除过1和本身,不能被其它数整除。通过循环遍历来判断一个数是否为素数。最近的两个素数应该从最中间的位置开始向两边查找。完整代码解题...原创 2019-06-06 18:27:35 · 485 阅读 · 0 评论 -
【牛客网】计算日期到天数转换
题目描述输入某年某月某日,判断这一天是这一年的第几天?输入描述:输入三行,分别是年,月,日输出描述:成功:返回outDay输出计算后的第几天;失败:返回-1示例输入: 2012 12 31输出:366解题思路用一个数组存放每月的累积天数 输入的日期天数= 当月的天数 + 当月之前的累积天数 如果包含二月,再去判断是否 为闰年,如果是闰年,再加1天即可完整代码解题1#i...原创 2019-06-06 18:11:39 · 735 阅读 · 0 评论 -
【牛客网】查找输入整数二进制中1的个数
题目描述输入描述:输入一个整数输出描述:计算整数二进制中1的个数示例输入:5输出:2解题思路本题是计算一个数二进制表示中1的个数,通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。完整代码#include <iostream>using namespace std;...原创 2019-06-06 18:00:28 · 339 阅读 · 0 评论 -
【牛客网】二进制插入/替换
题目描述有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始。给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。测试样例:输入:1024,19,2,6返回:1100解题思路及完整代码1.将两个数的二进...原创 2019-06-04 22:20:29 · 446 阅读 · 0 评论 -
【牛客网】把字符串转换成整数
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例输入+21474836471a33输出214748...原创 2019-06-04 21:28:39 · 162 阅读 · 0 评论 -
【牛客网】:求最大连续bit数
题目描述功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1输入: 一个byte型的数字输出: 对应的二进制数字中1的最大连续数输入描述: 输入一个byte数字输出描述: 输出转成二进制之后连续1的个数示例输入: 3输出: 2解题思路根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) &a...原创 2019-06-02 19:23:24 · 346 阅读 · 0 评论 -
【牛客网】最近公共祖先
题目描述有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点 a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。测试样例:输入:2,3返回:1解题思路题目所描述的满二叉树如下: 1 / \ 2 3 / \ / \ 4 5...原创 2019-06-02 19:11:28 · 325 阅读 · 0 评论 -
【牛客网】井字棋
题目描述对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代 表是对方玩家的棋子。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true解题思路井字棋有四种情况表示当前玩家获胜,1代表当前玩家棋子 1. 行全为1, 即行的和为3 2. 列...原创 2019-06-02 18:51:26 · 435 阅读 · 0 评论 -
【牛客网】两种排序方法(判断字符串是按哪种排序方式完成)
**输入描述:** 输入第一行为字符串个数n(n ≤ 100) 接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成 **输出描述:** 如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically",如果根据长度排列而不是字典序排列输出"lengths",如果两种方式都符合输出"both",否则输出"none" 。思路很简单,只要会用vector容器和string就可以了。我们将接受的字符串都放到vector容器中,利用string的operator>原创 2019-06-02 18:28:43 · 644 阅读 · 2 评论 -
【牛客网】最小公倍数
在上篇博客里,我讲到:求最大公约数 的方法大全 :https://blog.csdn.net/ly_6699/article/details/90719315题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小 公倍数。输入描述: 输入两个正整数A和B。输出描述: 输出A和B的最小公倍数。示例输入: 5 7输出: 35解...原创 2019-06-02 18:19:31 · 930 阅读 · 0 评论 -
【牛客网】连续最大正数的和
题目描述一个数组有 N 个元素,求连续子数组的正数最大的和。输入描述: 输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个 整数都在32位int范围内。以空格分隔。输出描述: 所有连续子数组中正数和最大的值。示例输入:20 3 -12 50 7输出: 57解题思路碰到负数则之前的和清零,重新计算正...原创 2019-05-29 01:04:08 · 236 阅读 · 0 评论 -
【牛客网】合法括号序列判断
以下记录了牛客网上 的一道题 *(根据输入的字符串,判断是否为一个合法的括号串)* 。这里主要用于分享和总结自己的解题思路,欢迎大家一起参与讨论,一起进步~## 原题目描述对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。输入描述:输入一串字符,包含'(' 和 ')'及其他字符。输出描述:返回true或false。原创 2019-05-29 00:35:31 · 894 阅读 · 0 评论 -
【牛客网】Fibonacci数列
题目描述Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或...原创 2019-05-29 00:06:48 · 388 阅读 · 0 评论 -
【牛客网】连续最大和
题目描述一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述: 输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个 整数都在32位int范围内。以空格分隔。输出描述: 所有连续子数组中和最大的值。示例输入: 3 -1 2 1输出: 3...原创 2019-05-27 17:35:56 · 265 阅读 · 0 评论 -
【牛客网】:统计回文
题目描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有 对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符 串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新 串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A =...原创 2019-05-26 22:21:34 · 272 阅读 · 0 评论 -
【牛客网】进制转换
题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述: 输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述: 为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10 用A表示,等等)示例:输入: 7 2输出: 111解题思路本题思路很简单,首先想清楚原理:N进制数,每个进...原创 2019-05-25 17:29:16 · 366 阅读 · 0 评论 -
【牛客网】计算糖果
题目描述A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道 以下的信息: A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数. 现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所 有题设条件。输入描述: 输入为一行,一共4个整数,分别为...原创 2019-05-25 17:19:23 · 266 阅读 · 0 评论