48天笔试强训
劲夫学编程
扬州大学软件工程在读研究生
C语言学习在《C语言快速入门》和《C语言考研重置版》,个人建议看考研重置版,讲的更详细
数据结构详解在《数据结构专栏》
数据结构代码在《数据结构代码汇总》
JAVA学习在《JAVA快速入门》和《java EE》
读者可自行查看作者专栏,与君共同进步
展开
-
每日一题系列:淘宝网店
牛客网连接:https://www.nowcoder.com/questionTerminal/754921e9c98b43d1b2d70c227b844101?toCommentId=13055397NowCoder在淘宝上开了一家网店。他发现在月份为素数的时候,当月每天能赚1元;否则每天能赚2元。现在给你一段时间区间,请你帮他计算总收益有多少。案例已全部通过import java.util.*;public class Main{ public static int mont原创 2022-05-11 20:33:33 · 380 阅读 · 1 评论 -
每日一题系列:最难的问题
牛客网刷题:最难的问题原创 2022-05-10 20:29:57 · 98 阅读 · 0 评论 -
每日一题系列:美国节日
牛客网刷题:美国节日原创 2022-05-10 20:26:48 · 412 阅读 · 0 评论 -
每日一题系列:计算字符串的编辑距离
链接:https://www.nowcoder.com/questionTerminal/3959837097c7413a961a135d7104c314来源:牛客网Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家 Levenshtein 提出的,故又叫 Levenshtein Distance 。例如:字符串A: abcdefg字符原创 2022-04-25 17:22:23 · 370 阅读 · 0 评论 -
每日一题系列:找出字符串中第一个只出现一次的字符
找出字符串中第一个只出现一次的字符数据范围:输入的字符串长度满足 1≤n≤1000import java.util.*;public class Main{ public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); HashMap<Character,Integer> h原创 2022-04-25 14:27:34 · 518 阅读 · 3 评论 -
每日一题系列:公共子串计算
链接:https://www.nowcoder.com/questionTerminal/98dc82c094e043ccb7e0570e5342dd1b来源:牛客网给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度。注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串。数据范围:字符串长度:1≤s≤150进阶:时间复杂度:O(n^3) ,空间复杂度:O(n)解题思路:对于动态规划来说,我们没办法一下子解决这个大问题,需要划分成小问题,我们先看每个字符串原创 2022-04-21 20:38:04 · 335 阅读 · 0 评论 -
每日一题系列:汽水瓶
链接:https://www.nowcoder.com/questionTerminal/fe298c55694f4ed39e256170ff2c205f?toCommentId=12726161&ran=685来源:牛客网某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。数据范围:输入的正整数满足 1 \le n \le 100 \1≤n≤100注意:本题存在多组输入。输入的 0 表示输入结束,并不原创 2022-04-21 18:21:18 · 886 阅读 · 1 评论 -
每日一题系列:洗牌
链接:https://www.nowcoder.com/questionTerminal/5a0a2c7e431e4fbbbb1ff32ac6e8dfa0来源:牛客网洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左原创 2022-04-21 18:10:54 · 124 阅读 · 0 评论 -
每日一题系列:统计每个月兔子的总数
链接:https://www.nowcoder.com/questionTerminal/1221ec77125d4370833fd3ad5ba72395?toCommentId=12698466来源:牛客网有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?public static void main(String[]原创 2022-04-17 19:15:52 · 441 阅读 · 0 评论 -
每日一题系列:扑克牌大小
链接:https://www.nowcoder.com/questionTerminal/0a92c75f5d6b4db28fcfa3e65e5c9b3f?toCommentId=12666232来源:牛客网扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王)😃3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用“-”连接,原创 2022-04-15 20:31:16 · 429 阅读 · 0 评论 -
每日一题系列:跳石板
链接:https://www.nowcoder.com/questionTerminal/4284c8f466814870bae7799a07d49ec8来源:牛客网小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:原创 2022-04-13 18:42:08 · 156 阅读 · 0 评论 -
每日一题系列:给定一个十进制数M,以及需要转换的进制数N,将十进制数M,转换成N进制数
给定一个十进制数M,以及需要转换的进制数N,将十进制数M,转换成N进制数输入为一行,M是(32)位整数,N(2<=N<=16),用空格隔开eg:输入 7 2 输出 111输出描述:为了每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如10用A表示,等等) public static void main(String[] args) { Scanner scanner=new Scanner(System.in);原创 2022-04-08 17:17:25 · 793 阅读 · 0 评论 -
每日一题系列:不要二
二货小易现有一个W*H的网格盒子,网格的行编号为0 ~ H-1,网格的列编号为0 ~ W-1。每个格子可放1块蛋糕,任意两块蛋糕的欧几里得距离不能等于2对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:[(x1-x2) * (x1-x2)+(y1-y2) * (y1-y2)]的平方根小易想知道最多可放多少块蛋糕在网格盒子里输入:每组数组包含网格长宽W,H,用空格分割(1<=W、H<=1000)输出:最多可以放的蛋糕数解题思路:我们先来看一下欧几里得距离等于2的情况原创 2022-04-07 20:27:57 · 232 阅读 · 0 评论 -
每日一题系列:数组子数组的连续最大和
一个数组有N个元素,求连续子数组的最大和。例如:[-1,2,1],和最大的连续子数组为[2,1],其和为3输入:第一行一个整数n(1<=n<=100000),表示一个有n个元素 第二行为n个数,即每个元素,每个整数在32位int范围内,以空格分隔例如输入3 -1 2 1输出3思路:设输入的数组为arr[ ]sum表示子数组的和,max表示最大和我们这里让sum和max的初值都等于arr[0]如果sum+arr[i]>sum,sum+=arr[i],原创 2022-04-07 19:16:02 · 550 阅读 · 0 评论 -
每日一题系列:查找组成一个偶数最接近的两个素数
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题要求输出组成指定偶数的两个素数差值最小的素数对。数据范围:输入的数据满足4<=n<=1000输入描述:输入一个大于2的偶数输出描述:从小到大的两个素数示例1:输入20输出7 13示例2:输入4输出2 2import java.util.*;public class Main{ //判断是不是素数-通过 public static boolean isSs(int x){原创 2022-04-03 18:21:04 · 546 阅读 · 0 评论 -
每日一题系列:求最大连续bit数
求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制位00000011,最大连续2个1数据范围:数据组数1<=t<=5,1<=n<=500000进阶:时间复杂度O(logn),空间复杂度:O(1)输入描述:输入一个int类型数字输出描述:输出转换成二进制后连续1的个数eg:输入:200输出:2说明:200的二进制表示是11001000,最多有2个连续的1解题思路:该题考查位运算比如我们这里给1个11,11对应的二进制数为1011,然后我们原创 2022-04-02 20:10:13 · 401 阅读 · 0 评论 -
每日一题系列:最近公共祖先
将一棵无穷大满二叉树的节点按根节点一层一层地从左往右编号,根节点编号为1。现给定a、b两个结点,设计一个算法,返回a、b最近的公共祖先编号。注意:其祖先也可能是节点本身eg:输入2,3返回1解决思路:比如我们现在有这样一个满二叉树a==b,我们直接返回a即可a!=b我们有一个公式由子节点找父节点公式:parent=child/2比如a=2,b=3让其中较大的b=b/2,也就是b=1然后a又成了较大的a=a/2,也就是a=1,这个时候a和b相等,就求出了最近公共祖先publ原创 2022-04-02 19:38:09 · 793 阅读 · 0 评论 -
每日一题系列:密码按如下规则进行计分,并根据不同的得分为密码安全等级划分
密码按如下规则进行计分,并根据不同的得分为密码安全等级划分一、密码长度5分:小于等于4个字符10分:5-7个字符25分:大于等于8个字符二、字母:0分:没有字母10分:密码里字母全是大(小)写20分:密码里字母符合“大小写混合”三、数字0分:没有数字10分:1个数字20分:大于1个数字五、奖励(只能选符合最多的那种奖励)2分:字母和数字3分:字母、数字、符号5分:大小写字母、数字、符号评分标准及对应输出>=90:非常安全 VERY_SECURE>=8原创 2022-04-01 21:39:51 · 1265 阅读 · 0 评论 -
每日一题系列:给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子
给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1表示对方玩家棋子。当一方棋子在横竖斜方向有连城排的获胜(井字棋规则)返回当前玩家是否胜出eg:[[1,0,1],[1,-1,-1],[1,-1,0]]返回true public boolean checkWon(int[][] board) {//通过 int h= board.length;//棋盘的行 int l=board[0].length;//棋盘的列原创 2022-04-01 21:37:35 · 882 阅读 · 0 评论 -
每日一题系列:请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数),从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路
请计算n*m的棋盘格子(n为横向的格子数,m为竖向的格子数),从棋盘左上角出发沿着边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路即:只能往右和往下走,不能往左和往上走注:沿棋盘格之间的边缘线走数据范围:1<=n,m<=8输入描述:输入两个正整数n和m,用空格隔开输出描述:输出结果每个棋盘都可以由向右走和向下走变为更小的棋盘,而缩小到最后无非是三种情况:1 * 1:2种走法1 * 2和2 * 1:3种走法走到棋盘边缘:只能直着走,也就是只能往下或者往右——1种原创 2022-03-30 20:52:55 · 1633 阅读 · 2 评论 -
每日一题系列:考拉有n个字符串,任意两个字符串长度都是不同的。考拉最近学习到两种字符串的排序方法
考拉有n个字符串,任意两个字符串长度都是不同的。考拉最近学习到两种字符串的排序方法:1.根据字符串的字典序排序。eg:“cat”<“carriage”<“cats”<“doggies”<“koala”2.根据字符串的长度排序。eg:“cat”<“cats”<“koala”<“doggies”<“carriage”考拉想知道自己这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以你来帮忙验证输入:输入第一行为字符串的个数n(n<=100原创 2022-03-28 21:40:26 · 1356 阅读 · 0 评论 -
每日一题系列:给你一个数N,求最少多少步可以变成Fibonacci数
Fibonacci数列是这样定义的:F[0]=0,F[1]=1i>=2,F[i]=F[i-1]+F[i-2]因此,Fibonacci数列就形如:0,1,1,2,3,5,8,13,21…给你一个N,你想让其变成一个Fibonacci数,每一步你可以把当前数X变为X-1或者X+1现给你一个数N,求最少多少步可以变成Fibonacci数输入描述:输入为一个正整数(1<=N<=1,000,000)输出描述:输出一个变为Fibonacci数的最小步数eg:输入15,输出2 pu原创 2022-03-27 23:14:13 · 730 阅读 · 0 评论 -
每日一题系列:将一个字符串转换成一个整数,要求不能使用字符串转换成整数的库函数 数值为0或者字符串不是一个合法的数值则返回0
将一个字符串转换成一个整数,要求不能使用字符串转换成整数的库函数数值为0或者字符串不是一个合法的数值则返回0数据范围:字符串长度0<=n<=100进阶:空间复杂度O(1),时间复杂度O(n)注意:1.字符串中可能出现任意符号,出现除+/-以外的符号直接输出02.字符串中可能出现+/-且仅可能出现在字符串首位输入:输入一个字符串,包括数字字母符号,可以为空如果是合法的数值表达则返回该数字,否则返回0eg:输入"+2147483647"输出2147483647输入“-123”原创 2022-03-27 23:12:26 · 241 阅读 · 0 评论 -
每日一题系列:回文串是一个正读反读都一样的字符串,比如“level”或者“noon” 现给字符串A和字符串B,请问有没有办法将B插入A中,使得产生新字符串是一个回文串
回文串是一个正读反读都一样的字符串,比如“level”或者“noon”现给字符串A和字符串B,请问有没有办法将B插入A中,使得产生新字符串是一个回文串比如A=“aba”,B=“b”插法1(插第一个a前面):“baba” 不是回文串插法2(插第一个a后面):“abba” 是回文串插法3(插第一个b后面):“abba” 是回文串插法4(插第二个a后面):“abab” 不是回文串输入:每组输入数据共两行,第一行为字符串A,第二行为字符串B(字符串长度均小于100,且只包含小写字母)输出一个数字,表原创 2022-03-27 23:08:32 · 1518 阅读 · 3 评论 -
每日一题系列:A,B,C三人是好友,每个人手里都有一些糖果,我们不知道每人具体有多少糖果
A,B,C三人是好友,每个人手里都有一些糖果,我们不知道每人具体有多少糖果但是我们知道A-B,B-C,A+B,B+C这四个数值,代表每个人拥有的糖果数输入为:A-B,B-C,A+B,B+C,用空格隔开(范围均在-30~30)输出为1行,如果存在满足的数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格如果不存在这样的整数A,B,C则输出No public static void main(String[] args) { Scanner scanner=new Scan原创 2022-03-27 23:06:39 · 368 阅读 · 0 评论 -
每日一题系列:给一个长度为n的数组,数组内有一个数字出现的次数超过了数组长度的一半,请找出这个数字 eg:[1,2,3,2,2,2,5,4,2] 2在数组中出现了5次,超过数组长度一半,输出2
给一个长度为n的数组,数组内有一个数字出现的次数超过了数组长度的一半,请找出这个数字eg:[1,2,3,2,2,2,5,4,2]2在数组中出现了5次,超过数组长度一半,输出2eg:[1],输出1 public int MoreThanHalfNum_Solution(int [] array) { if(array.length==1){ return array[0]; } int mid=array.length/2;原创 2022-03-27 23:04:42 · 1801 阅读 · 1 评论 -
每日一题系列:在一行中输出str中连续最长的数字串
在一行中输出str中连续最长的数字串eg:输入str:abcd12345de125ss123456789输出:123456789 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); int bj=0;//标记一个数字串长度,0代表结束,1代表开始 int m原创 2022-03-27 23:02:42 · 278 阅读 · 0 评论