
牛客每日一题
安然就好
这个作者很懒,什么都没留下…
展开
-
牛客每日一题系列(持续更新)
题目奇数位上都是奇数位或偶数位上都是偶数位有假币最难的问题因子个数原创 2021-05-22 21:10:44 · 259 阅读 · 1 评论 -
数组中出现次数超过一半的数字(Java)
牛客链接数组中出现次数超过一半的数字题目数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000解题思路方法一为排序,排序后取中间值即可(此数字大于数组长度的一半,若有则一定是排序后的中间值)。方法二为遍历,记录数字出现的次数,记录出现次数的最大值,和数组的长度一半原创 2021-06-10 21:11:32 · 703 阅读 · 0 评论 -
乒乓球筐(Java)
牛客链接乒乓球筐题目nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类,并且每种球的数量不少于B盒中的数量,该怎么办呢?输入描述输入有多组数据。每组数据包含两个字符串A、B,代表A盒与B盒中的乒乓球,每个乒乓球用一个大写字母表示,即相同类型的乒乓球为相同的大写字母。字符串长度不大于10000。输出描述每一组输入对应一行输出:如果B盒中所有球的类型在A中都有,并且每种球的数量都不大于A,则输出“Yes”;否则输出“No”。原创 2021-06-09 22:11:42 · 210 阅读 · 0 评论 -
单词倒排(Java)
牛客链接单词倒排题目对字符串中的所有单词进行倒排。说明:1、构成单词的字符只有26个大写或小写英文字母;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;输入描述输入一行以空格来分隔的句子输出描述输出句子的逆序解题思路需要用到正则表达式:[^a-zA-Z] (去匹配目标字符串中非a—z也非A—Z的字符)所以将字符串用split以正则表原创 2021-06-08 21:23:57 · 657 阅读 · 0 评论 -
骆驼命名法(Java)
牛客链接骆驼命名法题目从C/C++转到Java的程序员,一开始最不习惯的就是变量命名方式的改变。C语言风格使用下划线分隔多个单词,例如“hello_world”;而Java则采用一种叫骆驼命名法的规则:除首个单词以外,所有单词的首字母大写,例如“helloWorld”。请你帮可怜的程序员们自动转换变量名。输入描述输入包含多组数据。每组数据一行,包含一个C语言风格的变量名。每个变量名长度不超过100。输出描述对应每一组数据,输出变量名相应的骆驼命名法。解题思路将字符串用split原创 2021-06-08 21:20:11 · 611 阅读 · 0 评论 -
解读密码(Java)
牛客链接解读密码题目nowcoder要和朋友交流一些敏感的信息,例如他的电话号码等。因此他要对这些敏感信息进行混淆,比如在数字中间掺入一些额外的符号,让它看起来像一堆乱码。现在请你帮忙开发一款程序,解析从nowcoder那儿接收到的信息,读取出中间有用的信息。输入描述输入有多行。每一行有一段经过加密的信息(其中可能包含空格),并且原始信息长度不确定。输出描述输出每段信息中数字信息。解题思路遍历字符串,是数字就输出(charAt >= ’ 0 ’ && ch原创 2021-06-04 21:34:13 · 275 阅读 · 0 评论 -
Emacs计算器(Java)
牛客链接Emacs计算器题目Emacs号称神的编辑器,它自带了一个计算器。与其他计算器不同,它是基于后缀表达式的,即运算符在操作数的后面。例如“2 3 +”等价于中缀表达式的“2 + 3”。请你实现一个后缀表达式的计算器。输入描述输入包含多组数据。每组数据包括两行:第一行是一个正整数n (3≤n≤50);紧接着第二行包含n个由数值和运算符组成的列表。“±*/”分别为加减乘除四则运算,其中除法为整除,即“5/3=1”。输出描述对应每一组数据,输出它们的运算结果。解题思路根据挨个原创 2021-06-03 22:16:29 · 372 阅读 · 0 评论 -
发邮件(错排算法)
牛客链接发邮件题目NowCoder每天要给很多人发邮件。有一天他发现发错了邮件,把发给A的邮件发给了B,把发给B的邮件发给了A。于是他就思考,要给n个人发邮件,在每个人仅收到1封邮件的情况下,有多少种情况是所有人都收到了错误的邮件?即没有人收到属于自己的邮件。输入描述输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。输出描述对应每一组数据,输出一个正整数,表示无人收到自己邮件的种数。解题思路错排算法代码实现import java.util.Scanner;pub原创 2021-06-02 21:30:05 · 208 阅读 · 0 评论 -
数据库连接池(Java)
牛客链接数据库连接池题目Web系统通常会频繁地访问数据库,如果每次访问都创建新连接,性能会很差。为了提高性能,架构师决定复用已经创建的连接。当收到请求,并且连接池中没有剩余可用的连接时,系统会创建一个新连接,当请求处理完成时该连接会被放入连接池中,供后续请求使用现在提供你处理请求的日志,请你分析一下连接池最多需要创建多少个连接输入描述输入包含多组数据,每组数据第一行包含一个正整数n(1≤n≤1000),表示请求的数量紧接着n行,每行包含一个请求编号id(A、B、C……、Z)和操作(conn原创 2021-05-30 21:47:12 · 168 阅读 · 0 评论 -
mkdir(Java)
牛客链接mdir题目工作中,每当要部署一台新机器的时候,就意味着有一堆目录需要创建。例如要创建目录“/usr/local/bin”,就需要此次创建“/usr”、“/usr/local”以及“/usr/local/bin”。好在,Linux下mkdir提供了强大的“-p”选项,只要一条命令“mkdir -p /usr/local/bin”就能自动创建需要的上级目录。现在给你一些需要创建的文件夹目录,请你帮忙生成相应的“mkdir -p”命令。输入描述输入包含多组数据。每组数据第一行为一个正整原创 2021-05-30 21:38:57 · 1041 阅读 · 0 评论 -
年会抽奖(错排算法)
牛客链接年会抽奖题目今年公司年会的奖品特别给力,但获奖的规矩却很奇葩:首先,所有人员都将一张写有自己名字的字条放入抽奖箱中;待所有字条加入完毕,每人从箱中取一个字条;如果抽到的字条上写的就是自己的名字,那么“恭喜你,中奖了!”现在告诉你参加晚会的人数,请你计算有多少概率会出现无人获奖?输入描述输入包含多组数据,每组数据包含一个正整数n(2≤n≤20)。输出描述对应每一组数据,以“xx.xx%”的格式输出发生无人获奖的概率。错排算法讲解B站讲解解题思路错排算法的实现原创 2021-05-27 22:35:14 · 525 阅读 · 0 评论 -
收件人列表(Java)
牛客链接收件人列表题目NowCoder每天要给许多客户写电子邮件。正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。现在给你一组收件人姓名,请你帮他生成相应的收件人列表。输入描述输入包含多组数据。每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。紧接着n行,每一行包含一个收件人的姓名。姓名长度不超过16个字符。输出描述对应每一组输入,输出一行收件人列表。解题思路简单的字符原创 2021-05-26 21:45:24 · 609 阅读 · 0 评论 -
养兔子(Java)
收件人列表题目一只成熟的兔子每天能产下一胎兔子。每只小兔子的成熟期是一天。 某人领养了一只小兔子,请问第N天以后,他将会得到多少只兔子。输入描述测试数据包括多组,每组一行,为整数n(1≤n≤90)。输出描述对应输出第n天有几只兔子(假设没有兔子死亡现象)。解题思路斐波那契。今天的兔子数量昨天的兔子的数量fib[n-1]加上生的兔子的数量,生的兔子的数量等于前天的兔子的数量fib[n-2](都成熟了具有生育力)。把对应的斐波那契值存到数组里,直接取出来输出即可。代码实现impor原创 2021-05-26 21:40:02 · 366 阅读 · 0 评论 -
客似云来(Java)
牛客链接客似云来题目NowCoder开了一家早餐店,这家店的客人都有个奇怪的癖好:他们只要来这家店吃过一次早餐,就会每天都过来;并且,所有人在这家店吃了两天早餐后,接下来每天都会带一位新朋友一起来品尝。于是,这家店的客人从最初一个人发展成浩浩荡荡成百上千人:1、1、2、3、5……现在,NowCoder想请你帮忙统计一下,某一段时间范围那他总共卖出多少份早餐(假设每位客人只吃一份早餐)。输入描述测试数据包括多组。每组数据包含两个整数from和to(1≤from≤to≤80),分别代表开店的原创 2021-05-25 20:07:46 · 433 阅读 · 0 评论 -
剪花布条(Java)
牛客链接剪花布条题目一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?输入描述输入包含多组数据。每组数据包含两个字符串s,t,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。输出描述对应每组输入,输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就输出0,每个结果占一行。原创 2021-05-25 20:01:26 · 411 阅读 · 0 评论 -
斐波那契凤尾(Java)
牛客链接斐波那契凤尾题目NowCoder号称自己已经记住了1-100000之间所有的斐波那契数。为了考验他,我们随便出一个数n,让他说出第n个斐波那契数。当然,斐波那契数会很大。因此,如果第n个斐波那契数不到6位,则说出该数;否则只说出最后6位。输入描述输入有多组数据。每组数据一行,包含一个整数n (1≤n≤100000)。输出描述对应每一组输入,输出第n个斐波那契数的最后6位。解题思路按理说求斐波那契数时,不使用递归的算法的复杂度会低,但是在牛客运行后还是会超时,但是如果提前原创 2021-05-24 20:59:28 · 257 阅读 · 0 评论 -
因子个数(Java)
牛客链接因子个数题目一个正整数可以分解成一个或多个数组的积。例如36=223*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数,他希望你开发一个程序输出每个正整数的因子个数。输入描述输入包括多组数据。每组数据仅有一个整数n (2≤n≤100000)。输出描述对应每个整数,输出其因子个数,每个结果占一行。解题思路思路1第一个想到的算法是从i = 2开始循环,用输入的数据num除以 i ,除数用set保存,如果没出现过,则进行count+原创 2021-05-22 21:04:15 · 2002 阅读 · 0 评论 -
最难的问题(Java)
牛客链接最难的问题题目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原创 2021-05-22 20:48:06 · 209 阅读 · 0 评论 -
有假币(Java)
牛客链接有假币题目居然有假币! 现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!!可惜nowcoder 一不小心把它混进了一堆真币里面去了。只知道假币的重量比真币的质量要轻,给你一个天平(天平两端能容纳无限个硬币),请用最快的时间把那个可恶的假币找出来。输入描述1≤n≤2^30,输入0结束程序。输出描述最多要称几次一定能把那个假币找出来?解题思路 分三堆:天平上两堆哪堆轻哪堆就有假币原创 2021-05-21 21:14:56 · 368 阅读 · 0 评论 -
奇数位上都是奇数位或偶数位上都是偶数位(Java)
牛客网原题奇数位上都是奇数位或偶数位上都是偶数位解题思路 判断数组最后一位元素arr[len-1]是奇数还是偶数,若是偶数,则与偶数位的数进行交换后将要交换偶数位向后移两个位置(移到下一个要交换的数组元素位置),若是奇数,则与奇数位的数进行交换后同理向后移两个位置即可。代码实现 public void oddInOddEvenInEven(int[] arr) { //数组长度len int len = arr.length原创 2021-05-20 21:43:18 · 316 阅读 · 0 评论