小红书笔试 小红书笔试题 0407

笔试时间:2024年04月07日

历史笔试传送门:2023秋招笔试合集

第一题

题目:小苯送礼物

小苯是“小红书app”的一名博主,这天他想要给自己的“铁粉”送一些礼物。他有n名粉丝,编号从1到n,但他只能选择其中k名送礼物,他决定选择其中对他支持力度最大的前k名粉丝。(如果两名支持力度相同,则优先选择收藏数更多的,如果都一样,则优先选择编号更小的(因为这意味着他关注小苯的时间更早))具体的:每名粉丝如果每给小苯点一次赞,则他对小苯就增加了1点支持力度,如果他每收藏小苯的一篇文章,则他对小苯增加2点支持力度。现在小苯想知道,他应该选择哪k名粉丝送出礼物,请你帮帮他吧。

输入描述

输入包括n+1行

第一行两个正整数n, k分别表示对小苯有过支持的粉丝个数,以及小苯选择送礼的粉丝个数。

接下来n行,每行两个整数x, y,表示第i位粉丝给小苯点过×次赞,收藏过y个小苯的文章。

输出描述

输出包含一行k个正整数,表示小苯选择出送礼物的粉丝们的编号。(按照升序输出)。

样例输入

4 2

1 2

2 1

3 0

1 3

样例输出

1 4

参考题解

模拟排序即可。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main () {
  int n, k; cin >> n >> k;
  vector<vector<int>> a(n);
  for (int i = 0; i < n; ++i) {
    int x, y; cin >> x >> y;
    a[i] = {i, x, y};
  }
  sort(a.begin(), a.end(), [&](auto& b, auto& c) {
    int s1 = b[1] + 2 * b[2], s2 = c[1] + 2 * c[2];
    if (s1 == s2) {
      return b[2] == c[2] ? b[0] < c[0] : b[2] > c[2];
    }
    return s1 > s2;
  });
  vector<int> ans(k);
  for (int i = 0; i < k; ++i) ans[i] = a[i][0] + 1;
  sort(ans.begin(), ans.end());
  for (int e : ans) cout << e << " ";
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        List<int[]> a = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            int x = scanner.nextInt();
            int y = scanner.nextInt();
            a.add(new int[]{i, x, y});
        }

        a.sort((b, c) -> {
            int s1 = b[1] + 2 * b[2];
            int s2 = c[1] + 2 * c[2];
            if (s1 == s2) {
                return b[2] == c[2] ? Integer.compare(b[0], c[0]) : Integer.compare(c[2], b[2]);
            }
            return Integer.compare(s2, s1);
        });

        List<Integer> ans = new ArrayList<>();
        for (int i = 0; i < k; i++) {
            ans.add(a.get(i)[0] + 1);
        }
        Collections.sort(ans);
        for (int e : ans) {
            System.out.print(e + " ");
        }
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

n, k = map(int, input().split())
a = []

for i in range(n):
    x, y = map(int, input().split())
    a.append([i, x, y])

a.sort(key=lambda b: (b[1] + 2 * b[2], -b[2], b[0]), reverse=True)

ans = [a[i][0] + 1 for i in range(k)]
ans.sort()

print(" ".join(map(str, ans)))

第二题

题目:小红的精选笔记

小红在小红书上面发布了n篇笔记,其中第i筒笔记的点赞数量为ai,评论数为bi,。现在小红准备选择k筒笔记作为“精选笔记合集”,合集的优秀程度为:所有笔记点赞数之和乘以评论数的最小值。现在小红想知道,最终台集最大的优秀度是多少?

输入描述

第一行输入两个正整数n,k,代表笔记的数量,以及小红准备选择的合集大小。

第二行输入n个正整教ai,代表每简笔记的点赞数。

第三行输入n个正整数bi,代表每篇笔记的评论数。

输出描述

—个正整数,代表最终最大的优秀度。

样例输入

4 2

1 2 3 4

3 4 2 1

样例输出

10

提示

选第二篇和第三篇即可。

参考题解

按照评论数排序,考虑每个评论数作为最小评论数,统计大于当前评论数的笔记中最大的k个点赞数之和,这一步可以用优先队列实现。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
using ll = long long;
int main () {
  int n, k; cin >> n >> k;
  vector<vector<int>> a(n, vector<int>(2));
  for (int i = 0; i < n; ++i) cin >> a[i][0];
  for (int i = 0; i < n; ++i) cin >> a[i][1];
  sort(a.begin(), a.end(), [&](auto& b, auto& c) {
    return b[1] > c[1];
  });
  priority_queue<int, vector<int>, greater<int>> pq;
  ll ans = 0, sum = 0;
  for (int i = 0; i < n; ++i) {
    pq.push(a[i][0]);
    sum += a[i][0];
    if (i >= k - 1) {
      ans = max(ans, sum * a[i][1]);
      sum -= pq.top(); pq.pop();
    }
  }
  cout << ans;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论

相关推荐

04-01 16:02
已编辑
武汉工程大学 Java
牛客98843461...:处女面??我还种马面渣男面处男面呢
点赞 评论 收藏
分享
1.&nbsp;自我介绍2.&nbsp;项目都是自己写的吗?3.&nbsp;我看你用&nbsp;koa2&nbsp;写后端,为什么选择它,能讲讲吗?4.&nbsp;那你提到&nbsp;koa2&nbsp;它是不提供中间件的,你是怎么解决的?5.&nbsp;中间件的原理是什么?(洋葱模型)6.&nbsp;你刚刚说碰到&nbsp;next()&nbsp;就进入下一个中间件,那&nbsp;next&nbsp;只能执行同步,如果是异步的话,你是怎么处理的?(async/await,但是我发现,有的中间件需要在异步中间件之前执行,所以我用&nbsp;try/catch&nbsp;来处理异步中间件的异常)7.&nbsp;JS&nbsp;异步发展史,以及它们的优缺点说一下&nbsp;(回调函数--Promise--Generator--async/await)8.&nbsp;你刚刚说&nbsp;Promise&nbsp;状态不能更改,那如果我要设计一个能修改&nbsp;Promise&nbsp;状态的函数,你会怎么设计?9.&nbsp;CSS&nbsp;水平垂直居中的方法(flex、grid、绝对定位&nbsp;+&nbsp;margin:auto、绝对定位&nbsp;+&nbsp;负&nbsp;margin、绝对定位&nbsp;+&nbsp;transform、table-cell)10.&nbsp;你刚刚说到&nbsp;flex&nbsp;布局,那&nbsp;flex:1&nbsp;是什么意思?(flex:&nbsp;flex-grow&nbsp;&nbsp;flex-shrink&nbsp;&nbsp;flex-basis;等价&nbsp;flex:1&nbsp;1&nbsp;0%表示元素可以均分剩余空间,可拉伸、可压缩,不依赖内容宽度,自动自适应填充布局。)11.&nbsp;父容器宽是&nbsp;500px,然后它左右各有两个子容器是&nbsp;100px,如果设置&nbsp;flex:&nbsp;1,那它的宽度是多少?(500-100-100=300px)12.&nbsp;说说你对浏览器缓存的理解(强缓存、协商缓存)13.&nbsp;如果一个用户,他怎么去刷新都无法刷到最新版的代码,你能说下可能的原因吗?(版本号、hash等)还有吗?(我说我不知道了,面试官说还有&nbsp;CDN&nbsp;没有同步,我说企业才会这么干,自己写项目一般不会,我知道&nbsp;cdn&nbsp;是用来解决高并发的手段)14.&nbsp;React你熟吗?说下&nbsp;React&nbsp;函数组件和类组件的区别15.&nbsp;怎么避免&nbsp;Hooks&nbsp;导致组件重新渲染?(使用&nbsp;useCallback、useMemo、React.memo、useRef等等)16.&nbsp;谈一下我对&nbsp;React&nbsp;的状态管理的理解(Redux、Mobx、Zustand,我说&nbsp;Zustand&nbsp;用的最多)17.&nbsp;React&nbsp;常见的&nbsp;hooks&nbsp;有哪些?(useState、useEffect、useRef、useCallback、useMemo、useReducer、useContext、useImperativeHandle、useLayoutEffect、useDebugValue)18.&nbsp;TS&nbsp;你熟吗?我们引进&nbsp;TS&nbsp;的目的是为什么?19.&nbsp;interface&nbsp;和&nbsp;type&nbsp;的区别20.&nbsp;说下&nbsp;TS&nbsp;里的泛型21.&nbsp;我现在有十个字段,比如十个字段就要&nbsp;A&nbsp;B&nbsp;C&nbsp;D&nbsp;E&nbsp;F&nbsp;G&nbsp;这种。那我现在另有另外一个方法,这个方法接受的参数呢,必须是这个&nbsp;interface&nbsp;A&nbsp;里面的这个&nbsp;K。就比如说你可以是&nbsp;A&nbsp;B&nbsp;C&nbsp;可以&nbsp;A&nbsp;B&nbsp;C&nbsp;D&nbsp;任何组合都可以,但是必须是这个&nbsp;interface&nbsp;里面的&nbsp;A&nbsp;里面的定义的。这个&nbsp;K&nbsp;这种类型的话是怎么去定义呢?(说实话我有点不太理解啥意思,反正我说了&nbsp;keyof)```&nbsp;TypeScriptinterface&nbsp;Obj&nbsp;{A:&nbsp;stringB:&nbsp;stringC:&nbsp;stringD:&nbsp;stringE:&nbsp;string//&nbsp;其他字段...}```22.&nbsp;vite&nbsp;用过吗?说说和&nbsp;webpack&nbsp;的区别。vite&nbsp;的优缺点是什么23.&nbsp;说说&nbsp;Tree&nbsp;shaking(树摇)&nbsp;和&nbsp;Code&nbsp;Splitting&nbsp;(代码分割)的区别24.&nbsp;Git&nbsp;你熟吗?说说&nbsp;git&nbsp;merge&nbsp;和&nbsp;git&nbsp;rebase&nbsp;的区别,什么时候用&nbsp;git&nbsp;merge,什么时候用&nbsp;git&nbsp;rebase?25.&nbsp;web3&nbsp;你熟吗?(不太熟,听说过而已)26.&nbsp;我看你自我介绍说了&nbsp;AI,你是怎么用的?27.&nbsp;除了提示词,还有什么能让&nbsp;AI&nbsp;更聪明?28.&nbsp;AI&nbsp;的优缺点你说一下29.&nbsp;AI&nbsp;发展这么快,你觉得我们以后会扮演什么角色?30.&nbsp;反问基本都答上来了。面了我80分钟,我还以为稳过的
查看29道真题和解析
点赞 评论 收藏
分享
评论
4
16
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务