滴滴0913笔试

第一题,每个玩具有一个电量值,你有一块电池总电量为m,现在要选几个连续的玩具,且这几个玩具的电量总和不能超过m,求能最多选几个玩具?
滑动窗口题,初始left和right为0,right不断+1,判断right和left之间的玩具电量和是否大于m,若大于,则left+1,直到电量和小于m,更新res变量max(res,right-left+1),这里电量和可以用前缀和做,也可以每次right或者left变化的时候动态维护。

第二题,有n首歌各自有自己的排名1~n,输入n行,每行两个数,op,x,op为1则表示排名为x的歌排名应该变低,op为-1则表示排名为x的歌排名应该变高,op为0则表示排名不变,现在问能否根据这n行输入构造出一个满足要求的歌排名?
开一个n+1的bool数组occupy,occupy[i]表示排名i被占用了,先根据输入按照x排序,遍历一遍处理op=0的,对应的accupy[x]=True即可,再遍历一遍处理op=1的,从前往后遍历occupy,如果有False的,占用掉,如果找不到False,则返回“NO”,再遍历一遍处理op=-1的,从当前位置往后遍历找有没有False的。
全部评论
第二题用两个list存储排名,然后排序,互相比较,这个方法为什么不行啊,佬能解释一下吗? if (down.size()==up.size()){ boolean flag = true; for (int k = 0;k<up.size();k++){ if (up.get(k)<down.get(k)){ flag = false; break; } } if (Math.random()>0.5){ out.println(flag ? "YES":"NO"); } }else { out.println("NO"); }
点赞 回复 分享
发布于 09-13 20:47 贵州
力扣上有没有类似的题目呢 感觉有点懵
点赞 回复 分享
发布于 09-14 09:45 广东

相关推荐

点赞 2 评论
分享
牛客网
牛客企业服务