【笔试刷题】2026.03.21-第二套-小米-改编真题

✅ 春招备战指南 ✅

💡 学习建议:

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

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

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

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

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

2026.03.21-第二套-小米

这套两题都很典型。第一题是固定长度区间最大和,看到“连续一段、长度恰好为 ”之后,直接上定长滑动窗口就够了;第二题则需要把三维绝对值和拆成 种符号组合,再在每种组合下贪心取前 大贡献。

开场题主要考察基础建模和实现稳定性,尤其是窗口右移时“加新减旧”的写法要一次写对。第二题虽然包装成装备属性,但本质模型非常纯粹,关键是尽快想到绝对值展开,再把问题压回排序求和。

01. 年会套圈

年会套圈

问题描述

K 小姐正在参加年会互动区的套圈游戏。桌上有 件奖品排成一列,第 件奖品对应的喜好值为

她手里的套圈宽度固定为 ,并且落点非常准。也就是说,只要她把套圈放在某个起点 ,就会恰好套中连续的这一段奖品:

这次获得的总喜好值就是:

请你帮她计算,最多能拿到多少喜好值。

输入格式

第一行输入两个整数 ,表示奖品数量和套圈宽度。

第二行输入 个整数 ,表示每件奖品的喜好值。

输出格式

输出一行一个整数,表示能够获得的最大喜好值之和。

样例输入

5 3
7 1 2 5 5

样例输出

12

样例说明

把套圈放在第 个位置时,会套中区间 ,对应喜好值之和为:

这是所有合法位置中的最大值。

数据范围

题解

区间长度已经固定成了 ,所以题目其实就是:

  • 在所有长度恰好为 的连续子数组里
  • 找出元素和的最大值

定长滑动窗口

先计算前 个元素的和,作为第一个窗口:

设它的和为 cur,同时把答案 ans 初始化为 cur

接下来窗口每次向右移动一格:

  • 新进入窗口的是
  • 离开窗口的是

所以新窗口的和可以用上一窗口直接更新:

每次更新完后,用 ans 维护最大值即可。

为什么这样是对的

所有合法选择对应的都是长度为 的连续区间,滑动窗口正好把这些区间按顺序扫了一遍,没有遗漏也不会重复。

而相邻两个窗口只差两个元素:

  • 一个新进来
  • 一个被移出去

因此不用每次重新把整段求和,只要做一次“加新减旧”就能得到当前窗口的真实和。

复杂度分析

  • 时间复杂度:
  • 空间复杂度:

参考代码

  • Python
import sys

input = lambda: sys.stdin.readline().strip()


def solve() -> None:
    n, length = map(int, input().split())
    arr = list(map(int, input().split()))

    cur = sum(arr[:length])
    ans = cur

    for i in range(length, n):
        cur += arr[i] - arr[i - length]
        if cur > ans:
            ans = cur

    print(ans)


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

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, length;
    cin >> n >> length;
    vector<long long> a(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }

    long long cur = 0;
    for (int i = 0; i < length; ++i) {
        cur += a[i];
    }
    long long ans = cur;

    for (int i = length; i < n; ++i) {
        cur += a[i] - a[i - length];
        ans = max(ans, cur);
    }

    cout << ans << '\n';
    return 0;
}
  • Java
import java.io.*;
import java.util.*;

public class Main {
    static class FastScanner {
        private final InputStream in = System.in;
        private final byte[] buffer = new byte[1 << 16];
        private int ptr = 0;
        private int len = 0;

        private int read() throws IOException {
            if (ptr >= len) {
                len = in.read(buffer);
                ptr = 0;
                if (len <= 0) {
                    return -1;
                }
            }
            return buffer[ptr++];
        }

        long nextLong() throws IOException {
            int c;
            do {
                c = read();
            } while (c <= 32 && c != -1);

            long sign = 1;
            if (c == '-') {
                sign = -1;
                c = read();
            }

            long val = 0;
            while (c > 32) {
                val = val * 10 + (c - '0');
                c = read();
            }
            return val * sign;
        }
    }

    public static void main(String[] args) throws Exception {
        FastScanner fs = new FastScanner();
        int n = (int) fs.nextLong();
        int length = (int) fs.nextLong();
        long[] a = new long[n];
        for (int i = 0; i < n; i++) {
            a[i] = fs.nextLong();
        }

        long cur = 0;
        for (int i = 0; i < length; i++) {
            cur += a[i];
        }
      

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

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

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

全部评论

相关推荐

LZHR:老哥你从投递简历测评完到一面中间隔了多久呀,我这边已经过了五天了仍显示简历筛选中是不是就是挂了
腾讯求职进展汇总
点赞 评论 收藏
分享
卡卡罗特ovo:说起云智我就来气,约好了一面,结果面试官没来,ssob上问hr也未读,我还是专门请了半天假在家面试,恶心死了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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