【秋招笔试】2025.08.15联想秋招改编题

✅ 秋招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题
  • 对照解析查漏补缺

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

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

🌸 目前本专栏已经上线140+套真题改编解析,后续会持续更新的

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

题目一:魔法水晶的光芒测量

1️⃣:使用多源最短路算法,以所有水晶位置为起点进行BFS扩展

2️⃣:利用优先队列保证按光芒强度从小到大处理位置

3️⃣:向左右相邻位置扩展,直到输出K个最小值

难度:中等

这道题目的关键在于理解问题本质是一维数轴上的多源最短路问题。通过将所有魔法水晶作为起点,使用优先队列进行类似BFS的扩展,可以保证按光芒强度从小到大的顺序输出结果,实现O((N+K)log(N+K))的高效解法。

题目二:赛车引擎优化计算

1️⃣:建立两个引擎系统到达时间的数学模型

2️⃣:通过不等式变形推导出最大推力值的计算公式

3️⃣:使用高精度数据类型避免乘法溢出

难度:简单

这道题目是一个典型的数学推导问题,需要根据两个引擎系统的特性建立时间函数,然后通过不等式求解得到最大推力值的公式。关键在于理解物理意义并正确处理大数乘法可能产生的溢出问题。

01. 魔法水晶的光芒测量

问题描述

小兰是一位资深的魔法研究员,专门研究古代遗迹中的神秘水晶。在最新发现的地下洞穴中,她发现了一个奇特的现象:沿着洞穴的主通道,分布着 颗会发光的魔法水晶。

这些魔法水晶按照从左到右的顺序,分别位于通道上的 位置处,且满足

小兰需要测量通道上每个位置的"光芒强度"。根据她的研究,任意位置 的光芒强度定义为该位置到最近魔法水晶的距离,即:

为了完成她的魔法实验,小兰需要找出从位置 到位置 (共 个整数位置)中,光芒强度最小的 个值,并按照从小到大的顺序记录下来。

输入格式

第一行包含三个正整数 ,分别表示通道的长度、魔法水晶的数量以及需要找出的最小光芒强度值的个数。

第二行包含 个正整数 ,表示每颗魔法水晶在通道上的位置。

输出格式

输出 行,每行一个整数,表示按从小到大排序后的第 小光芒强度值。

样例输入

10 3 5
1 4 8

样例输出

0
0
0
1
1
样例 解释说明
样例1 通道长度为10,有3颗水晶分别在位置1、4、8。计算所有位置0到10的光芒强度:[1,0,1,0,0,1,2,1,0,1,2],最小的5个值为0,0,0,1,1

数据范围

题解

这道题的核心思想是使用多源最短路算法来解决。

首先分析问题本质:我们需要找到所有位置中光芒强度(到最近水晶的距离)最小的 个值。这实际上是一个在一维数轴上的多源最短路问题。

解法思路:

  1. 将所有魔法水晶的位置作为起始点,它们的光芒强度都是0
  2. 使用优先队列(小根堆)进行类似BFS的扩展
  3. 每次取出当前光芒强度最小的位置,记录这个强度值
  4. 向左右两个相邻位置扩展,如果这些位置在有效范围内且未被访问过,就加入队列
  5. 重复上述过程,直到输出了 个值

关键观察:由于一维数轴上相邻位置的距离为1,使用优先队列可以保证按光芒强度从小到大的顺序处理位置,因此输出的序列天然有序。

时间复杂度:,其中需要处理的位置数最多为

空间复杂度:,用于存储队列和访问标记。

参考代码

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

import heapq

# 读取输入
L, N, K = map(int, input().split())
crystals = list(map(int, input().split()))

# 初始化访问集合和优先队列
visited = set(crystals)
pq = [(0, pos) for pos in crystals]  # (光芒强度, 位置)
heapq.heapify(pq)

count = 0
while count < K and pq:
    # 取出当前光芒强度最小的位置
    strength, pos = heapq.heappop(pq)
    print(strength)
    count += 1
    
    # 向左右扩展
    for next_pos in [pos - 1, pos + 1]:
        # 检查位置是否有效且未访问
        if 0 <= next_pos <= L and next_pos not in visited:
            visited.add(next_pos)
            heapq.heappush(pq, (strength + 1, next_pos))
  • Cpp
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    long long L;
    int N, K;
    cin >> L >> N >> K;
    
    vector<long long> crystals(N);
    for (int i = 0; i < N; i++) {
        cin >> crystals[i];
    }
    
    // 优先队列存储 (光芒强度, 位置)
    priority_queue<pair<long long, long long>, 
                   vector<pair<long long, long long>>, 
                   greater<pair<long long, long long>>> pq;
    
    unordered_set<long long> visited;
    
    // 初始化所有水晶位置
    for (long long pos : crystals) {
        pq.push({0, pos});
        visited.insert(pos);
    }
    
    int count = 0;
    while (count < K && !pq.empty()) {
        auto [strength, pos] = pq.top();
        pq.pop();
        
        cout << strength << "\n

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

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

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

全部评论
只有2道算法吗
点赞 回复 分享
发布于 09-01 22:51 江苏

相关推荐

头像 会员标识
08-24 13:53
东南大学 Java
ElasticSearch&nbsp;面试题分类整理本整理旨在整合牛客上ES相关面试八股题,帮助各位更好地准备秋/春招技术面试,感谢各位大佬在各大公司面试经验分享中贡献的宝贵面试题目。一、ES基础概念与原理基础概念-&nbsp;什么是Elasticsearch?请介绍一下Elasticsearch-&nbsp;Elasticsearch&nbsp;的基本概念有哪些?-&nbsp;Elasticsearch&nbsp;中的集群、节点、索引、文档、类型是什么?-&nbsp;说一下text&nbsp;和&nbsp;keyword类型的区别-&nbsp;DocValues的作用是什么?-&nbsp;什么是停顿词过滤?-&nbsp;query&nbsp;和&nbsp;filter&nbsp;的区别是什么?-&nbsp;Elasticsearch有哪些数据类型?你在项目中用了哪些?-&nbsp;Elasticsearch支持事务吗?核心原理-&nbsp;什么是倒排索引?-&nbsp;你了解倒排索引的实现原理吗?-&nbsp;在&nbsp;Elasticsearch&nbsp;中,是怎么根据一个词找到对应的倒排索引的?-&nbsp;如何在保留不变性的前提下实现倒排索引的更新?-&nbsp;lucence&nbsp;内部结构是什么?-&nbsp;是否了解字典树?-&nbsp;讲一下elasticsearch和mysql&nbsp;的区别-&nbsp;Elasticsearch为什么适合搜索?-&nbsp;elasticsearch的原理和结构是怎样的?-&nbsp;ES为什么这么快?存储机制-&nbsp;String类型在ES中是怎么存储的?-&nbsp;Elasticsearch链式存储与行式存储的区别是什么?链式存储的优势有哪些?-&nbsp;你了解Elasticsearch的Segment吗?-&nbsp;说一下Elasticsearch的Refresh机制-&nbsp;你知道Elasticsearch的Flush操作吗?-&nbsp;什么是Merge操作?二、ES架构与集群管理集群架构-&nbsp;Elasticsearch的架构是怎样的?-&nbsp;说说你们公司&nbsp;es&nbsp;的集群架构,索引数据大小,分片有多少?-&nbsp;分片机制是如何实现分布式集群的?-&nbsp;分片和副本有什么区别?-&nbsp;你了解分段机制吗?-&nbsp;ES是怎么样去运行的?跑了几个节点?Master选举与脑裂-&nbsp;Elasticsearch&nbsp;的分布式原理是什么?-&nbsp;Elasticsearch是如何实现Master选举的?-&nbsp;Elasticsearch&nbsp;重要的节点(比如公共&nbsp;20&nbsp;个),其中的&nbsp;10&nbsp;个选了一个master,另外&nbsp;10&nbsp;个选了另一个&nbsp;master,怎么办?-&nbsp;Elasticsearch是如何避免脑裂现象的?-&nbsp;Elasticsearch&nbsp;集群脑裂问题如何解决?节点协调与负载-&nbsp;节点和分片是如何协调的?-&nbsp;客户端在和集群连接时,如何选择特定的节点执行请求的?-&nbsp;你遇到过数据倾斜问题吗?如何处理?-&nbsp;什么是长尾问题?三、数据写入与更新写入流程-&nbsp;详细描述一下&nbsp;Elasticsearch&nbsp;索引文档的过程-&nbsp;es&nbsp;写数据的过程是怎样的?-&nbsp;写数据的底层原理是什么?-&nbsp;文档索引步骤顺序是什么?-&nbsp;新增的文档怎么快速和旧文档一起被检索?更新删除-&nbsp;详细描述一下&nbsp;Elasticsearch&nbsp;更新和删除文档的过程-&nbsp;ES更新一个文档,它的操作步骤是什么样子的?高并发写入-&nbsp;写压力大时怎么处理?-&nbsp;海量数据如何写入es?-&nbsp;在并发情况下,Elasticsearch&nbsp;如何保证读写一致?-&nbsp;ES在高并发下如何保证读写一致性?四、搜索与查询搜索流程-&nbsp;详细描述一下&nbsp;Elasticsearch&nbsp;搜索的过程-&nbsp;Query阶段是如何工作的?-&nbsp;Fetch阶段是如何工作的?分词与查询-&nbsp;分词器的分词流程是怎样的?-&nbsp;ES你是用过什么样的接口去搜索的?比如搜索一个关键字,你是怎么去搜索的?-&nbsp;title的类型是什么类型(设置ES索引的时候)?深度分页-&nbsp;ES的深度分页与滚动搜索scroll是什么?五、性能优化与调优索引优化-&nbsp;建立索引阶段性能提升方法有哪些?-&nbsp;索引阶段性能提升方法有哪些?-&nbsp;elasticsearch&nbsp;索引数据多了怎么办,如何调优?-&nbsp;说一下你了解的调优手段聚合优化-&nbsp;Elasticsearch&nbsp;对于大数据量(上亿量级)&nbsp;的聚合如何实现?系统调优-&nbsp;Elasticsearch&nbsp;在部署时,对&nbsp;Linux&nbsp;的设置有哪些优化方法?-&nbsp;对于&nbsp;GC&nbsp;方面,在使用&nbsp;Elasticsearch&nbsp;时要注意什么?六、部署与运维部署相关-&nbsp;elasticsearch如何部署?-&nbsp;ES应用你是怎么部署的?-&nbsp;如何监控&nbsp;Elasticsearch&nbsp;集群状态?七、数据同步与一致性数据同步-&nbsp;数据库修改信息如何同步ElasticSearch?-&nbsp;项目中你的数据是怎么灌入ES的?-&nbsp;怎样进行数据同步?-&nbsp;如何考虑es和MySQL一致性?-&nbsp;如果用消息队列异步写入的话,消息丢失怎么办?八、应用场景与实战使用场景-&nbsp;ElasticSearch的主要功能及应用场景是什么?-&nbsp;实习中的ElasticSearch为什么要用?为啥不直接查Mysql?特殊场景-&nbsp;针对文字,ES可以用倒排索引,你知道ES针对地图如何构建索引吗?---以上问题整理自牛客社区的面试经验分享,可结合ai逐问题解析以及实际项目经验进行深入理解。
小小:给楼主点赞,更多牛客面经八股题库可见:https://m.nowcoder.com/mianshi/top
秋招笔面试记录
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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