【春招笔试】2025.03.13-百度春招笔试题

✅ 春招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题(建议用时:90分钟/套)
  • 对照解析查漏补缺
  • 配套练习题库

🧸 题面描述背景等均已深度改编,做法和题目本质基本保持一致。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力

春秋招合集 -> 互联网必备刷题宝典🔗

百度 2025.03.13题目集

题目一:图书馆整理计划

1️⃣:统计每本书的编号出现次数,找出出现次数在 范围内的编号

2️⃣:将这些编号的所有书从书架上移除,保持剩余书籍的相对顺序不变

3️⃣:时间复杂度 ,空间复杂度 ,需要使用哈希表存储频次和待移除编号集合

难度:简单

题目二:魔法能量优化

1️⃣:将问题转化为:选择任意偶数个水晶施加魔法波动,使得总能量最大

2️⃣:计算每个水晶施加魔法波动后的能量增量 ,并按从大到小排序

3️⃣:贪心地选择增量为正的水晶对进行操作,时间复杂度

难度:中等

01. 图书馆整理计划

问题描述

小兰是一位图书馆管理员,她正在整理一排共 本书。每本书都有一个唯一的编号 。为了让书架看起来更整洁,小兰决定按照以下规则移除一些书:

如果某个编号的书在书架上出现的次数在 之间(包括 ),那么所有这个编号的书都会被移除,而其他书的相对位置保持不变。

小兰想知道应用这个规则后,书架上还剩下哪些书。

输入格式

输入包含多组测试数据。

第一行包含一个正整数 ,表示测试数据的组数。

接下来每两行描述一组测试数据:

  • 第一行包含三个整数 ,分别表示书的总数、移除规则的下限和上限。
  • 第二行包含 个整数,第 个整数是 ,表示每本书的编号。

保证对于单个测试点所有测试数据的 之和不超过

输出格式

对于每组测试数据,输出两行:

  • 第一行包含一个整数 ,表示整理后书架上剩余的书的数量。
  • 第二行包含 个整数,描述整理后书架上的书的编号。

数据保证 不为

样例输入

2  
6 2 2  
3 2 1 1 1 2  
6 1 2  
3 2 1 1 1 2  

样例输出

4  
3 1 1 1  
3  
1 1 1  
样例 解释说明
样例1 对于第一组测试数据,编号为 的书出现了2次,在移除范围 内,所以所有编号为 的书被移除。
对于第二组测试数据,编号为 的书出现了2次,编号为 的书出现了1次,都在移除范围 内,所以它们都被移除。

数据范围

  • 所有测试数据的 之和不超过

题解

这道题目要求我们根据书籍编号在书架上出现的次数来决定是否移除该编号的所有书籍。

解题思路很直观:

  1. 首先统计每个编号在书架上出现的次数
  2. 确定哪些编号的书籍需要被移除(即出现次数在 范围内的编号)
  3. 遍历原书架,保留不需要移除的书籍,按原顺序输出

例如,对于样例1的第一组数据:书架上有编号为3、2、1、1、1、2的书籍。编号3出现1次,编号2出现2次,编号1出现3次。根据规则 ,只有出现次数恰好为2的编号需要被移除,即编号2。移除后,书架上剩下编号为3、1、1、1的书籍。

实现上,我们可以使用哈希表(如map或dictionary)来统计每个编号的出现次数,然后使用集合(如set)来存储需要移除的编号。最后,遍历原书架,只保留不在移除集合中的书籍。

时间复杂度:,其中 是书籍的总数。我们需要遍历书架两次,一次用于统计每个编号的出现次数,一次用于构建结果。 空间复杂度:,需要存储每个编号的出现次数和结果数组。

参考代码

  • Python
import sys
input = lambda:sys.stdin.readline().strip()

def process_books():
    # 读取测试用例数量
    t = int(input())
    
    for _ in range(t):
        # 读取书的总数和移除规则
        n, l, r = map(int, input().split())
        books = list(map(int, input().split()))
        
        # 统计每个编号出现的次数
        freq = {}
        for book in books:
            if book in freq:
                freq[book] += 1
            else:
                freq[book] = 1
        
        # 确定需要移除的编号
        remove = set()
        for book, count in freq.items():
            # 检查是否在移除范围内
            if l <= count <= r:
                remove.add(book)
        
        # 构建结果数组
        result = []
        for book in books:
            if book not in remove:
                result.append(book)
        
        # 输出结果
        print(len(result))
        if result:
            print(" ".join(map(str, result)))
        else:
            print()

if __name__ == "__main__":
    process_books()
  • Cpp
#include <bits/stdc++.h>
using namespace std;

void solve_case() {
    int n, l, r;
    cin >> n >> l >> r;
    
    vector<int> books(n);
    unordered_map<int, int> freq;
    
    // 读取书籍编号并统计频率
    for (int i = 0; i < n; i++) {
        cin >> books[i];
        freq[books[i]]++;
    }
    
    // 确定要移除的编号
    unordered_set<int> to_rm;
    for (auto &p : freq) {
        if (p.second >= l && p.second <= r) {
            to_rm.insert(p.first);
        }
    }
    
    // 构建结果
    vector<int> kept;
    for (int book : books) {
        if (to_rm.find(book) == to_rm.end()) {
            kept.push_back(book);
        }
    }
    
    // 输出结果
    cout << kept.size() << endl;
    for (int i = 0; i < kept.size(); i++) {
        cout << kept[i];
        if (i < kept.size() - 1) cout << " ";
    }
    cout << endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t;
    cin >> t;
    while (t--) {
        solve_case();
    }
    
    return 0;
}
  • Java
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        
        for (int tc = 0; tc < t; tc++) {
            // 读取输入
            int n = sc.nextInt();
            int l = sc.nextInt();
            int r = sc.nextInt();
            
            int[] books = new int[n];
            Map<Integer, Integer> freq = new HashMap<>();
           

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

互联网刷题笔试宝典 文章被收录于专栏

互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力

全部评论

相关推荐

🔥&nbsp;个人背景:985本硕,一段自动驾驶相关实习,刚走完文远知行算法岗(感知方向)的全流程,热乎的面经分享!📌&nbsp;面试流程概览笔试:4道编程题(中等难度,动态规划+图遍历为主)。技术一面:代码手撕&nbsp;+&nbsp;项目深挖(50分钟)。技术二面:数学题&nbsp;+&nbsp;场景设计题(40分钟)。技术三面(总监面):技术视野&nbsp;+&nbsp;业务理解(30分钟)。HR面:常规问题(薪资/职业规划)。全程周期:约3周(中间有等美国面试官时差协调)。💻&nbsp;技术面真题回忆1.&nbsp;手撕代码题题目1:零钱兑换变种题干:给定硬币面额数组和总金额,求恰好凑成金额的最少硬币数,若无法凑出返回-1。Follow-up:如果要求输出所有可能的组合,如何优化空间?坑点:面试官追问了滚动数组优化和剪枝策略。题目2:线段交点算法题干:给定二维平面上两条线段(由端点坐标表示),判断是否相交,若相交返回交点坐标。边界情况:线段平行但不重合、端点重合、浮点数精度处理。解法:参数方程法,注意分母为0的情况!题目3(系统设计):实现&nbsp;shared_ptr&nbsp;的引用计数要求:线程安全、支持拷贝构造和赋值操作。考点:RAII思想、锁的使用(面试官让对比mutex和atomic的性能差异)。2.&nbsp;项目深挖问题问题1:你在点云处理项目中提到的循环推断问题是什么?如何解决?答:详细解释了OD(目标检测)与跟踪模块的相互依赖导致误差累积,最后引入卡尔曼滤波的先验估计做修正。追问:为什么不用粒子滤波?对比过效果吗?问题2:激光雷达与相机的时间戳不同步,会导致哪些问题?你们怎么做的同步?答:提到了硬件触发同步+软件插值法,面试官让手写伪代码描述插值逻辑。3.&nbsp;场景设计题题目:设计一个停车场车辆调度系统,支持实时路径规划(车辆从入口到车位的最优路径)。要求:如何表示停车场地图?如何处理动态障碍物(如行人)?路径最优的定义(时间最短&nbsp;vs&nbsp;转向最少)?我的思路:用栅格地图+A算法,动态障碍物用局部重规划(D&nbsp;Lite),面试官让分析时间复杂度。🚀&nbsp;备考建议(血泪总结)刷题重点:力扣动态规划(背包问题)、几何计算题(线段/矩形相交)、系统设计(智能指针/线程池)。项目复盘:务必理清项目的技术链条(输入-处理-输出-优化)。准备1-2个失败案例,说明如何定位和解决问题(面试官超爱问这个!)。自动驾驶知识:必看文远知行的技术文章(如多传感器融合方案)。了解行业竞对方案(如Waymo、Cruise的路径规划特点)。💡&nbsp;最后的小吐槽三面总监疯狂追问:“如果特斯拉FSD和我们的方案在十字路口相遇,谁的决策更优?为什么?”HR面被压力测试:“如果给你发offer,你会多快离职当前实习?”(差点没接住😅)欢迎讨论!&nbsp;大家有面过文远或其他自动驾驶公司的吗?求分享经验~✨✨现在文远知行还在招实习!最后附上学长给的内推码以及内推链接,可以更快筛选简历&nbsp;!✨内推链接:https://app.mokahr.com/m/campus_apply/jingchi/2137?recommendCode=DS17ugTB#/jobs🎯内推码:DS17ugTB(填码简历优先审!)&nbsp;&nbsp;&nbsp;春招和实习均可投递哦~岗位内推!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

更多
牛客网
牛客企业服务