首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
不会做题的小菜鸡
获赞
860
粉丝
44
关注
9
看过 TA
205
男
上海戏剧学院
2021
测试工程师
IP属地:上海
我的小脑瓜里装了许多小问题!
私信
关注
拉黑
举报
举报
确定要拉黑不会做题的小菜鸡吗?
发布(121)
评论
刷题
收藏
不会做题的小菜鸡
关注TA,不错过内容更新
关注
2021-10-05 17:02
上海戏剧学院 测试工程师
题解 | #判断二叉树是否对称#
思路 题目分析 题目给出一棵二叉树 我们需要返回判断这棵二叉树是否为左右对称的 这不仅要求我们要树的形状对称,还要求结点的数值也对称,并且只要求左右沿着根节点镜像即可 方法一:递归 我们可以实现这样一个递归函数,通过「同步移动」两个指针的方法来遍历这棵树,pp 指针和 qq 指针一开始都指向这棵树的根,随后 pp 右移时,qq 左移,pp 左移时,qq 右移。每次检查当前 pp 和 qq 节点的值是否相等,如果相等再判断左右子树是否对称。 方法二:迭代 首先我们引入一个队列,这是把递归程序改写成迭代程序的常用方法。初始化时我们把根节点入队两次。每次提取两个结点并比较它们的值(...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-10-05 16:00
已编辑
上海戏剧学院 测试工程师
题解 | #将升序数组转化为平衡二叉搜索树#
思路 题目分析 本题题干给出了一个增序序列 我们需要返回一棵按照上述序列组织的平衡二叉树,返回树根节点指针即可 方法一递归 我们认为我们的递归函数功能为 返回值表示以当前结点为根节点的平衡二叉树建立好 参数中包含了当前根节点,当前根节点的所要处理的数据在nums数组中的左右边界 函数体中需要我们从这个边界中取出中点的数值作为根节点数值 然后递归左右子树建树 这样我们只需要从根节点进行递归建树即可 方法二迭代 迭代的方法同样是层序遍历的思路 我们需要维护三个队列,结点队列、左边界队列、右边界队列 这三个队列的功能就是维护了递归方法中的根节点、根节点对应的左边界、根节点对应...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-30 18:03
已编辑
上海戏剧学院 测试工程师
题解 | #二叉树的最大深度#
思路 题目分析 题目给出一棵二叉树,函数的参数一项为根节点指针 我们需要返回这棵二叉树的高度 方法一:递归 我们将目标函数理解为以root指针为树的根节点,返回该树的高度 因此我们的目的就是递归地获得左子树高度,递归地获得右子树高度,在这两个高度数值中取出较大的数值,加上本身当前根节点的高度1,就是最终的结果 方法二:非递归层序 我们用队列的方式来逐层存储结点 队列中包含的信息是深度为同一深度的树的所有节点 对当前层的结点执行压入左右子节点的操作,完成之后当前层结点自己要退出队列 逐层的过程中统计树高度 最终返回树高 方法一:递归 /** * struct TreeN...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-28 12:19
已编辑
上海戏剧学院 测试工程师
题解 | #牛牛的AC#
思路 题目分析 题目给出了一个只包含字符"A"和"C"的字符串,并且给出一个可修改"A"为"C"或改"C"为"A"的机会次数k 我们需要利用k次的修改机会,获得一个最长的字符相同的子串,返回其最长长度 方法一:暴力统计 我们将每一个字符变换的位置作为起点,进行一次从起点往后数长度的尝试,其中遇到与起点不同的字符则利用给出的k次机会,用完为止,统计一次长度。每一个起点都这样进行统计,最终获得最大的长度值 方法二:滑动窗口 我们给定两个计数器a和c,分别记录我们遇到...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-27 12:46
上海戏剧学院 测试工程师
题解 | #最大数#
思路 题目分析 题目给出一串字符串,包含数字和大写英文字母 题目要求我们找出其中连续的最大的一组十六进制字符串 并最终返回其十进制的结果 方法一使用指针的思路,从前往后按照顺序访问字符串,将首指针和尾指针分别指向一组合法的16进制子字符串,然后计算其10进制值,下一轮继续用首尾指针读取一个16进制子字符串,转换成10进制值,并以此循环迭代计算出所有的10进制值,记录返回最大值即可 方法二使用贪心思路,优化方法一中获取子字符串的部分,贪心地选择最大的区间存储到返回值中,贪心的最大距离就是遇到非法16进制字符的时候。最终返回16进制最大值即可。 方法一:双指针 class Solu...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-22 16:23
上海戏剧学院 测试工程师
题解 | #远亲不如近邻#
思路 题目分析 题目要求我们在一维城镇中选取一个轴上的位置居住,给出若干可选的居住点方案,计算每一个方案对应的距离居住居民的最小值。 其中n表示居民个数,m表示可选的方案数量,a表示具体的居民居住方案,x表示牛牛可选方案 一种方法就是我们枚举所有的居民居住的位置,分别与所有的可选方案进行一一距离计算,对每一种方案取一个最小值,就是最终结果 另一种方法利用二分法,对居民居住位置首先排序,然后将我们的方案用二分的方法去找一个最优的区间,然后分别计算和左邻居右邻居的距离取最小值,就是当前方案的最短距离。 方法一:暴力枚举 class Solution { public: /*...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-22 14:53
已编辑
上海戏剧学院 测试工程师
题解 | #神奇的数字#
思路 题目分析 题目给出一个数字字符串 我们需要将这个字符串中所有的偶数数字进行翻转,奇数数字位置不变,返回这个新的字符串 第一种思路可以根据题目描述的方法,通过数据结构按照顺序存储偶数数字和偶数数字的索引,将偶数数字反转后按照原来的顺序和索引下标重新填到number中 第二种思路可以利用双指针的方法,对number字符串进行前后遍历,遇到偶数则将两个指针指向的数字交换,最终返回number数组 方法一:按照要求反转偶数序列重新填回 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-16 19:33
上海戏剧学院 测试工程师
题解 | #牛牛的冰激凌#
思路 题目分析 题目输入的参数按顺序分别为:一趟车可以拉的冰激凌数量,冰激凌的总数量,一趟车运输(返回)的时间,每个冰激凌做好的时间 我们要如何安排运输方式,才能使得运输冰激凌的时间最短,并且求最短运输时间下的汽车运输的次数 我们发现如果想运输走最后一个冰激凌,他的时间是取决于两个因素的 一方面:它自身如果做好的时间很久很久,汽车已经把前面的都拉完了,就等着最后一个做好,最终获得最短时间和最终汽车趟数。 另一方面:汽车可以在它做好之前等着,这时一部分冰激凌已经装上车,等着最后一个做好再装车走。最终这个时间要权衡是否汽车有必要等后面的冰激凌。 因此重要的是我们发现后面的冰激凌最终的运输...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-21 17:07
已编辑
上海戏剧学院 测试工程师
题解 | #递增数组#
思路 题目分析 给出了一个数组,我们要将其变为严格单调递增的数组。 我们可以采取的方式是:选定某个子区间的所有数字同时进行+1操作 最终返回我们处理的次数 直观上,当我们发现array[i] >= array[i+1]的时候,需要将array[i+1]进行+1操作,使其比前一项大 但是这样的方法导致结果是处理次数不是最优的,因为我们忽略了每次可以同时处理一个子区间的所有数字 因此当array[i+1]在执行+1操作的时候,我们不要拉大array[i+1]和其后面的数字之间原本的差,也就是说我们要继续维护array[i+1]和其后面数字的相对差值,具体操作就是将array[i+1...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-15 10:13
上海戏剧学院 测试工程师
2021-09-15
在牛客打卡2天,今天也很努力鸭!
每日监督打卡
0
点赞
评论
收藏
分享
2021-09-21 17:04
已编辑
上海戏剧学院 测试工程师
题解 | #线段树编号问题#
思路 题目分析 题目给出了build函数的规则,从根节点开始,递归地按照树的结构进行向下延伸,延伸出一个节点就进行编号。 编号的规则:当前结点编号i时,左子节点编号为i*2,右子节点编号为i*2+1 左右子树的划分规则是根据给定的区间进行二分向下取整划分,直到区间长度为0(结点中左右下标相同)为止停止划分。 返回能够划分的最大的编号 我们可以暴力进行递归,直接递归地使用build函数,这样时间代价很大。 我们也可以有选择地按照二分的方法,选出一条可以产生出最大编号的路径。因此我们难点思路就在于如何选择左右子树方向,使得编号能够达到最大。 我们可以总结发现,每次划分结果出来的左右子节点...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-09-21 16:57
已编辑
上海戏剧学院 测试工程师
题解 | #牛牛爱花#
思路 题目分析 我们有一块大小为3*n的土地,n即为我们的输入 这块土地可以种花,要求花和花之间上下左右不可相邻,且至少要种一朵,只要花种的位置不同就视作不同的种植方案 输出可以种花的方案数 我们发现,种植的行数是固定的 = 3 因此每一列的种植情况是死的,我们暂时不考虑至少要种一朵这个条件,因此比如某一列就可以种植的方案只能是[0,0,0],[1,0,0],[0,1,0],[0,0,1],[1,0,1]5种 而相邻列具有相关性,我们根据这种相关性递推下一列的方案数,比如 当前列如果为[0,0,0],则下一列可以选的方案数就是5种 如果当前列为[1,0,0],则下一列可选的方案只能是...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-08-21 20:52
已编辑
上海戏剧学院 测试工程师
题解 | #Pokemon#
思路 题目分析 题目给出我们皮卡丘和杰尼龟两方,都有HP值和ACK攻击值 每个回合允许双方攻击对方一次,其中杰尼龟可以选择将此回合的一次攻击换成回复满血量 每个回合必须皮卡丘先攻击 求最终杰尼龟是否能打败皮卡丘,并返回打败皮卡丘所用的回合数 最容易想到的方法一就是暴力推演整个攻击过程,用一个循环模拟整个攻击场景,不断记录血量变化并检验最终的结果和回合数 优化方案方法二是数学推理,通过双方的HP值和ACK值来推理皮卡丘死亡最终需要几个回合,并计算好杰尼龟需要恢复多少次,将这两组数据加和就是最终的回合数。 方法一:暴力推演 class Solution { public: ...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-08-21 12:38
上海戏剧学院 测试工程师
题解 | #最少素数拆分#
思路 题目分析 题目要求我们在给定正整数N的情况下,求出用素数相加得到N,所需要的最少的素数个数 根据哥德巴赫猜想,大于2的偶数都可以拆分成两个素数之和(暂时未找到反例),所以我们可以直接用这个猜想。 本题的关键在于,对于一个数字N,看似要找的素数的个数可以有很多个,但是经过数学推理,其实这个最少素数个数只能取值1,2,3 本题可以采用动态规划(方法一)的想法,将大问题N划分为其子问题,类似斐波那契数列的解决方案。我们假设最终返回的结果应该是f[N],对于其子问题,我们可以遍历i = 2 to N/2,在其中取f[i] + f[N-i]的最小值作为最终结果。 本题也可以利用数学推导(...
不会做题写的题解
0
点赞
评论
收藏
分享
2021-08-24 20:04
已编辑
上海戏剧学院 测试工程师
题解 | #算法交流群#
思路 题目分析 本题给出了四组数据,分别来解释一下他们的含义: 第一项表示一共有多少人 第二项表示这些人的做出题目的等级能力,按序为第1人,第2人...第n人 第三项表示除了第1人之外,第2人,第3人...第n人会求助的人 第四项表示这些人产生问题的难度,按序为第1人,第2人...第n人的问题难度 我们首先可以尝试遍历所有人,让每个人都去处理自己的问题,然后其中有人无法解决自己的问题的时候尝试一步步交给上一个人做,直到该问题被解决。这种方法就是暴力解法,时间复杂度大概在左右 因此我们可以优化的部分就是在向上递交问题解决的过程,我们不采用逐级递交问题的办法,而是采用以的量级向等级更...
不会做题写的题解
0
点赞
评论
收藏
分享
1
4
5
6
7
8
9
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务