小红书笔试
第一题用例过,本地debug了一下感觉也没问题啊,咋只有18%呢
很暴力,俩二维数组sort排序两次
一个是a1[编号][支持度]
一个是a2[编号][收藏数]
a1先排,支持度大的,编号小的往后放,
按照a1的编号顺序把a2初始化,
然后a2再排,收藏数大的,编号小的往后放
是哪里出了问题
发现了,这么排肯定不对啊,第二个排序可能把支持度小但收藏度大的换上去了😂
好消息是,把第二个sort去掉,直接只排支持度和编号,可以过91%😂
上次笔试a一道挂的,这回更厉害,一道没a😅
很暴力,俩二维数组sort排序两次
一个是a1[编号][支持度]
一个是a2[编号][收藏数]
a1先排,支持度大的,编号小的往后放,
按照a1的编号顺序把a2初始化,
然后a2再排,收藏数大的,编号小的往后放
是哪里出了问题
发现了,这么排肯定不对啊,第二个排序可能把支持度小但收藏度大的换上去了😂
好消息是,把第二个sort去掉,直接只排支持度和编号,可以过91%😂
上次笔试a一道挂的,这回更厉害,一道没a😅
全部评论
破大防,1.09/3,还不如上次呢
第一题:写个结构体三关键字排序
第二题:评论数倒排序,,同时小根堆维护前k大点赞值
第三题:dpij,前i个数,第i个数为j的方案数,要维护一下dpij的前缀和
总的来说比较基础,大概1easy1mid1hard
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int[][] rate = new int[n][4];
for (int i = 0; i < n; i++) {
rate[i][0] = in.nextInt();
rate[i][1] = in.nextInt();
rate[i][2] = rate[i][0] + rate[i][1] * 2;
rate[i][3] = i+1;
}
Arrays.sort(rate, (a, b) -> {
//支持度相同
if (a[2] == b[2]) {
//点赞数相同
if(a[1]==b[1]){
//编号
return a[3]-b[3];
}else{
//点赞数
return b[1]-a[1];
}
}else{
//支持度
return b[2]-a[2];
}
});
List<Integer> res=new ArrayList<>();
for(int i=0;i<k;i++){
res.add(rate[i][3]);
}
res.sort((a,b)->a-b);
for(int t:res)
System.out.print(t+" ");
}
写了2.19 想要个面试呜呜呜
先排score,取前k个编号,然后排编号
排序+前缀数组+小根堆 只过了55%,最后一个是dp,第一题就单纯的各种排序,一个排序过去就能a
一样啥问题呢
我第一题27 超时了 佬后面写了吗
输出有条件,相当于你要把输出的结果再次排序,按升序输出
leetcode 347. 前 K 个高频元素
xdm们,只排支持度和编号可以过91%
寄
我用一个class记录了粉丝的编号,点赞数,收藏数,支持力度,然后用set存的,自定义了set的排序方式,然后直接从这个set里取k个就是前k个
我只想问问第二题有A了的没
用Python吗?可以用sorted的key,给一个匿名函数,就能自动按顺序排序,顺序逆序就在要逆序的数字前加个负号就行
91好像是因为:编号小的要放前面。你写成编号大的放前面了
终于没人ak了,我自信了
我三道题都是9%
难道案例不一样?只排支持度我就过不了
第一题你拿到结果集之后还要再按序号再进行一次排序
相关推荐
逍遥生777:你找java的后端开发,那和java无关的项目就不用写了,剩余的项目写详细点
点赞 评论 收藏
分享