网易笔试0820

四道题,说一下自己的思路,不一定对
1. ab两个数,你每次可以操作一个数去掉一位,最少操作几次使得a为b的倍数或者b为a的倍数。
思路,dfs,参数是两个由ab转换出的list和操作次数,dfs中for循环删除a或者b的一位,走完所有步骤,返回最小的res。

2. 给你一个数组,让你变成12121 23232这种,问你最少操作几次。
思路,模拟题,分奇数位和偶数位计算最大值,遍历数组,奇数位和奇数位的max作差,偶数位和偶数位作差,最后的差的和就是res(特别的,如果偶数位的max和奇数位的max相等,要给res+=n/2)。这个过了百分百。

3. red组成的字符串,好的e左右各一个r和d,顺序可以换,问你至少操作几次,使得好的e最多。
思路
对于奇数长度的字符串,结果一定是reder或者dered这种,于是构建这两种字符串,分别计算变换到前者和后者的差异字符个数,小者为答案。
对于偶数长度字符串,结果可以有一个冗余字符r或者d插入到r或d旁边。这个具体的后面我还没想清楚,所以只过了0.5。

4. 符合条件的三元组,index ijk顺序依次增大,numsi等于numsk,numsj小于其他两个数,问你有多少组。
思路,直接暴力做的,过了0.667,剪枝没写对。

得分15×0.13+20+30×0.52+35×0.6667=60.8845#网易笔试##笔经面经#
全部评论
第三题做从左往右的reder和dered两种,记录到每一位前面需要做多少次改动,然后从右向左做一次,最后遍历数组,取到当前遍历位置左边改动次数和右边改动次数的和的最小值(因为偶数最大的情况一定是两个奇数的和) 第四题先遍历记录所有数字出现次数,然后枚举中间值,枚举的同时记录左边出现过的数字的次数,然后ans+=比当前枚举数字大的数字左边次数乘右边次数,这个过程用遍历做是n^2能过75,用树状数组做事nlogn能100
点赞 回复 分享
发布于 2022-08-20 18:43 湖北
关于第三题,我的思路是这样的。 对于奇数的处理和你的一样,对于偶数的处理,将其拆分成两个奇数(遍历所有的拆分可能,比如左边 string 长度为 1、 3、 5.。。。),然后处理两个奇数,在所有的拆分中找到最小值。(处理奇数时,还可以复用之前的结果,节省时间,比如长度为 5 的,可以从长度为 3 的推出来) 不知道是代码没写对还是思路有问题,最后没有 ac。
点赞 回复 分享
发布于 2022-08-20 19:34 江苏
第三题琢磨半天一直在想dp,然后一顿操作10%,第四题开个map从前向后遍历记录相同点的下标,然后对每个相同点下标内的数进行遍历计算过了9x.7%估计有一个样例超时了
点赞 回复 分享
发布于 2022-08-20 22:35 北京
已g已g
点赞 回复 分享
发布于 2022-09-02 19:10 湖北

相关推荐

嗷佛快来快来快快快来:我当时就是听了别人的谣言,环境的大变,左右摇摆不定,到最后一事无成。我也给你提不了什么有效的建议,因为我自己就是败犬。但是我确实是从cpp转到了Java,cpp也做过项目,了解过具体的细分方向。如果你感兴趣,不会拦你。因为只要一件事情能坚持下去 就会发光
点赞 评论 收藏
分享
评论
6
5
分享
牛客网
牛客企业服务