拼多多10.13笔试
投票
2.1/4,诶第三题没有考虑到那个分出多种的情况,只有0.1,后面发现了,想用dfs改,但是来不及了。寄,想问问2.1/4能有面吗
全部评论
第3题贪心思路,把原数组序号和数值合并按数值进行排序,满足序号和下一个序号原数组相邻,可合并数+1,只要可合并数 + k不小于n就是true
第三题有个简单的做法,对index排序,然后看index数组的连续的段数就可以了
连第一题都没A出来我tm太菜了啊
我第3题提交,有时候是40%,有时候是60%,都不知道是为什么。第4题直接bfs 暴力就可以过60%。
第3题先数组排序,计算排序数组和原数组相同的子数组个数,小于等于可划分个数就是true
第一题算0的个数为啥死活不对啊,一直0%
第一题用dp保存中间状态, 暴力/10, /5,/2 会超时。要怎么才能A?
第三题一个比较写成赋值没看出来直接死了
日内瓦,pdd,和楼主一样2.1,希望能有面吧
我第3题目思路是,感觉dfs 很复杂,然后可能有很多corner case,所以我想直接先sort 一下array,然后从sorted_array 的第一个开始,先找到这个element 在原array 的位置,然后就一路把两个array 对比看能最长到哪,然后继续下一个。但是这样子会超时,大概通过40-60%。
第二题根本看不懂,第三题我思路是输入的时候分出几个有序链表,然后用优先队列给k个链表排序,每切换一次链表消耗一次划分的机会(k-1)然后死于不会用c++的优先队列排序直接摆了
我第三题的思路是:
先按照原始数据的顺序依次插入到链表,再使用map记录每个结点对应的地址。
再对原始数据的数组进行排序,这样就确定了每个元素的最终顺序。
最后开始遍历排序后的数组,
1. 通过map加链表next指针可以拿到当前元素的下一个插入元素。
如果排序后的当前元素的下一个元素 与链表中(原始顺序)的下一个元素相同(题目规定元素不会重复),就可以与当前元素划分为一组。
2. 如果不相同,那就划分为新的一组。
3. 最后统计组数 是否 小于等于规定的K值。
时间复杂度也不高,就是排序的O(longN),为什么只能过30%,有没有大神解答一下?
佬第二题是咋做的啊?
第二题卡我最久,想偷个懒直接输出string把string里的一位改成了'\0',查了半天;第四题有点树上dp,写了个o(n),考虑一个点是否在旅游计划中,如果不在,那最佳计划一定在去掉这个点的多个子图中,因为是树所以和其相连的点一定在不同子图,就可以dp了;如果在,题目要求只能一条路只能走一遍,也就是找一条链,所以在和当前点相连的子图里找两个幸福度最大的加到自己身上就行了
我第三题的思路是,先将原数组的非递递减区间统计出来(一次遍历就可以统计),比如原数组是[6,7,8,7,-8,6,7,6],则非递减区间是[[6,8][7,7],[-8,7],[6,6]],存在 List〈int[]〉中,先比较非递减区间的数量和K的大小,如果说大于它,那直接就不行了。反之,就是力扣合并区间那道题的思路,先将这个非递减区间按照左边界进行排序,排序之后,检查这些非递减区间是不是非递减的,如果是,那就直接符合了,反之就不符合
相关推荐
11-14 15:03
西安电子科技大学 C++ 点赞 评论 收藏
分享