首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
摸鱼学大师
获赞
3986
粉丝
196
关注
10
看过 TA
669
男
复旦大学
2019
算法工程师
IP属地:上海
和but的刷题日记是好朋友!
私信
关注
拉黑
举报
举报
确定要拉黑摸鱼学大师吗?
发布(594)
评论
刷题
收藏
摸鱼学大师
关注TA,不错过内容更新
关注
2021-10-07 17:29
复旦大学 算法工程师
题解 | #字符个数统计#
题目的主要信息: 输入一个字符串,字符范围在在ASCII码范围内(0~127,包括0和127),换行符表示结束,不包括换行符 统计字符串出现了多少种字符 方法一:位图统计法 具体做法: 既然字符数是有限的,我们可以初始化一个大小为128的全0的数组,代表0-127的ASCII码是否出现过。遍历字符串,我们每次遇到一个字符,就将数组中相应位置改成1,这样数组中0的位置就是没有出现过的字符,1的位置就是出现过的字符,最后遍历数组将所有数字相加就是字符种类。 #include<iostream> #include<vector> using namespace std;...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-07 16:53
复旦大学 算法工程师
题解 | #提取不重复的整数#
题目的主要信息: 输入一个int型整数,按照数字从右到左的顺序返回,返回不含重复数字的新的整数 输入的数字最后一位不是0 方法一:字符串解法 具体做法: 我们可以将输入的数字看成一个字符串,然后从后往前遍历字符串,每个字符与待输出的字符串(一开始为空)比较(使用字符串的find函数),如果待输出的字符串中已经有了这个字符,我们将它舍去,否则将该字符添加到待输出的的串末尾。 #include<iostream> #include<string> using namespace std; int main(){ string s; cin >> s; str...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:27
已编辑
复旦大学 算法工程师
题解 | #合并表记录#
题目的主要信息: 输入n个成对的数,前者是index,后者是value 对相同index的数对,value求和合并到一起 最后按照index的升序输出合并后的index和value 方法一:暴力解法 具体做法: 我们可以利用一个数组保存pair类型的变量,pair里面分别是index和value。每次新输入一对数,我们遍历数组查看是否已经有了这个index,如果有将新输入的value加到其后面就可以了,如果没有将index和value组成pair加到数组末尾即可。最后我们重载vector中的比较方式,让其对index排序,再输出即可。 #include<iostream> #i...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:27
已编辑
复旦大学 算法工程师
题解 | #取近似值#
题目的主要信息: 输入一个正的浮点数,对它进行四舍五入取整 方法一:比较判断法 具体做法: 我们首先利用y=x/1y = x / 1y=x/1得到xxx的整数部分,如果xxx与整数部分的差值小于0.5,我们就输出 整数部分即可,但是如果差值大于了0.5,我们需要输出整数部分加1。 #include<iostream> #include<cmath> using namespace std; int main(){ float x; cin >> x; int y = x / 1; //得到整数部分 if(x - (float)y < 0.5) //...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:27
已编辑
复旦大学 算法工程师
题解 | #质数因子#
题目的主要信息: 输入一个正整数,找出它的全部质数因子(包括重复的) 输出所有质因子要从小到大,空格间开,最后一个数后面也要有空格 方法一:迭代 具体做法: 首先我们要知道三个点: 1没有算在这个质因数里面,但是如果这个数本来就是质数,那么它本身就是它的质因数。 所有的合数都是由质数相乘得到的,只要一个数把质因数全部除掉,它就不会有合因数了。 一个数的质因数不会超过它的算术平方根 那我们可以从2遍历到该数的算术平方根,然后检查是否是因子,如果是则将这个因子全部除尽且输出,再进入下一个。我们最后需要检查这个数本身就是质数的情况,因为在上述过程中它的大小没有变,所以只要它大于1,我们...
廊桥晚钟:
“一个数的质因数不会超过它的算术平方根”是错的,例如21的质因数是3和7,而7显然大于sqrt(21) 应当改为“一个数的质因数最多只有一个超过它的算术平方根”,程序中 if(n - 1) //自己本身就是质数 cout << n << " "; 此时的n也不一定就是初始的n,例如对于21来说,此时的n就是7
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:27
已编辑
复旦大学 算法工程师
题解 | #进制转换#
题目的主要信息: 将输入的十六进制数(字符串)转化成十进制的数字输出 可能同时输入多个测试字符串 方法一:遍历转换 具体做法: 对于每个输入的字符串,我们从后往前遍历,因为字符串前两位是0x,对数字没有意义,所有遍历时要去掉这两位。 遍历到每个字符时,我们将其利用ASCII转化成十进制的数——字符为数字的减去字符零即可,字符为字母的减去字符A还要加10,然后利用进制转化的操作,每一位的数乘上对应的16的次方数相加即可: #include<iostream> #include<string> #include<cmath> using namespace...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:26
已编辑
复旦大学 算法工程师
题解 | #字符串分隔#
题目的主要信息: 连续输入多次字符串,按照长度为8拆分每个字符串并输出 长度不是8的整数倍的字符串需要在末尾补0,空字符不处理 方法一:遍历添加法 具体做法: 我们利用while和cin连续读取字符串,对于每个读取的字符串,我们遍历其每一个字符,将遍历到的字符添加到临时变量output中,其中每8次要将output输出然后清空。遍历结束以后,我们要检查output中还有无剩余的字符,如果没有说明这个字符串刚好是8的倍数,我们跳过,否则我们需要在output末尾补0,直到output长度为8,才能输出。 #include<iostream> #include<string&...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:26
已编辑
复旦大学 算法工程师
题解 | #明明的随机数#
题目的主要信息: 一共多次调查,每次调查输入的第一个数为N,后续N个数随机(1-1000)的数字 需要对每次调查数字排序并去重后输出,每个数字一行 方法一:暴力排序去重 具体做法: 我们每次循环优先读取下面的数组长度,即优先读取N,然后用循环连续N个数字进入数字,这就是这次调查的全部数字了,然后我们使用sort函数快排对这些数字排序,排好序后我们就可以输出了,需要注意除了第一个元素外我们都要检查是否和前一个元素相等,相等我们就不输出,这样来去重。 #include<iostream> #include<vector> #include<algorithm&g...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:26
已编辑
复旦大学 算法工程师
题解 | #计算某字母出现次数#
题目的主要信息: 输入一个由字母、数字、空格组成的字符串,和一个目标字符,求该目标字符在字符串中出现的次数 不区分字母大小写 方法一:哈希表 具体做法: 我们可以按字符遍历输入的字符串,然后用无序哈希表记录每个字符出现的频率,因为不区分大小写,我们就将全部大写字母转换为相应的小写字母再统计。统计完成,输入目标字符,如果是大写字符将其转化成小写以后再进入哈希表查找出现的次数。 #include<iostream> #include<unordered_map> using namespace std; int main(){ char target; unorder...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:25
已编辑
复旦大学 算法工程师
题解 | #字符串最后一个单词的长度#
题目的主要信息: 计算输入的字符串最后一个单词的长度,单词以空格隔开 字符串末尾不以空格为结尾,长度小于5000 方法一:cin流输入 具体做法: 我们可以用利用C++的流输入(即cin),它可以直接将空格分割开,组成不同的单词,然后我们用每次都用相同的变量记录输入的单词,相当于遇到空格后变量s将重新填充新的单词。而最后变量中剩下来的单词就是字符串的最后一个单词,我们输出其长度即可。 #include<iostream> #include<string> using namespace std; int main(){ string s; while(cin >...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-13 16:26
已编辑
复旦大学 算法工程师
题解 | #把字符串转换成整数#
题目的主要信息: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数 值为0或者字符串不是一个合法的数值则返回0 输入字符串包括数字字母符号,可以为空 方法一:遍历法 具体做法: 我们遍历字符串,用index记录全程的下标。首先要排除前导空格,然后检查符号,最后是转换数字,如果在转换数字过程中出现字符则认为这是不合法的,返回0。当然转换数字的时候还要注意判断int型边界的情况。 class Solution { public: int StrToInt(string str) { int res = 0; int index = 0; int n = str.length();...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-03 20:46
复旦大学 算法工程师
题解 | #数组中只出现一次的两个数字#
题目的主要信息: 一个长度为nnn的数字,除了两个数字只出现1次,其余数字都出现2次 要找到这两次只出现一次的数字,还要以非降序输出 要求:空间复杂度O(1)O(1)O(1),时间复杂度O(n)O(n)O(n) 方法一:哈希表(能过,空间不符合要求) 具体做法: 遍历数组,用无序哈希表统计每个数字出现的频率,然后再遍历一次数组,对比哈希表,找到出现频率为1的两个数字,最后整理次序输出。 class Solution { public: vector<int> FindNumsAppearOnce(vector<int>& array) { unordered...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-03 19:56
复旦大学 算法工程师
题解 | #平衡二叉树#
题目的主要信息: 判断给定的一棵树是否是平衡二叉树 平衡二叉树::它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树 方法一:自顶向下求深度 具体做法: 递归遍历二叉树的每个结点,再递归计算每个结点的左右子树深度,判断每个结点的是否满足平衡二叉树的要求。 class Solution: def depth(self, root): #计算子树深度 if root is None: #空结点没有深度 return 0 left = self.depth(root.left) #递归计算左右子树深度 right = self.depth(root.ri...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-03 19:21
复旦大学 算法工程师
题解 | #二叉树的深度#
题目的主要信息: 输入一棵二叉树,求该树的深度 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度 方法一:递归(dfs) 具体做法: 对于一棵二叉树而言,其深度等于根结点这个1层+左子树和右子树深度的最大值,而每个子树我们都可以看成根节点,于是我们可以对这个问题划为子问题,利用递归来解决: rootdepth=max(leftdepth,rightdepth)+1root_{depth} = max(left_{depth}, right_{depth})+1rootdepth=max(leftdepth,rightdepth)+1 递归的终点...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
2021-10-03 18:58
复旦大学 算法工程师
题解 | #数字在升序数组中出现的次数#
题目的主要信息: 给定一个长度为n的非降序数组和一个数字k,求k在数组中出现的次数 要求:空间复杂度O(1)O(1)O(1),时间复杂度O(log2n)O(log_2n)O(log2n) 方法一:暴力遍历法(能过,时间不符合要求) 具体做法: 直接遍历数组data,查看每个数是否是等于k,然后计数即可。 class Solution { public: int GetNumberOfK(vector<int> data ,int k) { int res = 0; for(int i = 0; i < data.size(); i++) //遍历数组 if(data[i...
孤帆远影碧空尽
0
点赞
评论
收藏
分享
1
25
26
27
28
29
40
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务