有大佬分享一下9.7的百度笔试算法题解嘛

2,求N的互质的公倍数的个数
3,4是输入数字的个数,返回每个数的关于123的完美数字,完美数字只能由1.2.3组成,完美数字始终小于这个数
例:
输入:4  123,100,22,2144
输出:123,33,22,2133
#百度笔试##百度##笔试题目#
全部评论
我想的一种思路,先比较同位数全为1的数,如果该数小于全1数,相应的直接返回n-1位全3数,否则继续逐为从1,2,3这么试。比如1200,初始化为1111,满足,继续和第二位第二位比较,1211 大于1200,不满足,第三位1131满足,第四位1133,满足,即为最终结果
点赞 回复 分享
发布于 2021-09-08 09:02
我解题全是硬遍历 第二题直接让i从1开始遍历,如果N除以i是一个整数,那就放到数组里,最后肯定会有重复的,我就直接把数组flat然后去重(flat方法还不支持),一顿操作猛如虎,一看通过率4%..... 第三题我的思路是用正则检查是否全为1,2,3,如果是直接返回,如果不是就把这个数字-1然后递归, 但是测例好像超过2^52次方了,怎么测试都是栈溢出
点赞 回复 分享
发布于 2021-09-08 10:17
没参加昨晚的面试,但还是做了一下这道题,自己测是没什么问题,分享一下自己的思路,看看哪里还有不足的。 主要思想是贪心。将输入输出分成2种,一种是含0的,一种是不含0的。 1.不含0的:遍历每一位数,大于9的就直接替换成3,小于等于3的就不变。 2.含0的:首先找到第一个0出现的下标pos,然后从后往前遍历i,i>=1,,遇到的是0的话,就加个while循环,往前寻找第一个非0的(比如100,从第二个0,从右往左找到第一个非0的1),并将遇到的0都置换为3,然后第一个非0数减1(也就是1-1==0,变成了一个前导0),.如果i位置上的不是0,且i大于第一个0出现的位置pos,小于pos的不变,也置换成3。经过这样操作,就变成了不含0,或者只含一个前导0的数了,前导0可以直接去掉,不含0的话就按1中不含0的方式再处理一次。
点赞 回复 分享
发布于 2021-09-08 15:36

相关推荐

11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务