美团数据开发工程师笔试

软件开发笔试汇总专栏https://blog.nowcoder.net/zhuanlan/0oDWVm

题型:5道编程题

第一题

小美拿到了—个排列。她想知道在这个排列中,xy是否是相邻的。你能帮帮她吗?

排列是指一个长度为n的数组,其中1n每个元素恰好出现一次。

输入描述

第一行输入一个正整数n,代表排列的长度。

第二行输入n个正整数ai,代表排列的元素。

第三行输入两个正整数xy,用空格隔开。

1 n 200000

1ai,x,y n

保证xy

输出描述

如果xy在排列中相邻,则输出"Yes"。否则输出"No"

示例1

输入

4

1 4 2 3

2 4

输出

Yes

 

示例2

输入

5

3 4 5 1 2

3 2

输出No

#include <iostream>
#include <vector>

using namespace std;

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

    int x, y;
    cin >> x >> y;

    int posX = -1, posY = -1;  // 初始位置设置为-1
    for (int i = 0; i < n; i++) {
        if (a[i] == x) posX = i;
        if (a[i] == y) posY = i;

        if (posX != -1 && posY != -1) break;  // 如果x和y的位置都找到了,就停止循环
    }

    if (abs(posX - posY) == 1) {  // 检查x和y的索引是否相差1
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }

    return 0;
}

第二题

有一个环形的公路,上面共有n站,现在给定了顺时针第i站到第i+1站之间的距离(特殊的,也给出了第n站到第1站的距离)。小美想沿着公路第x站走到第y,她想知道最短的距离是多少?

输入描述

第一行输入一个正整数n,代表站的数量。

第二行输入n个正整数ai,n-1个数代表顺时针沿着公路走, i站到第i1站之间的距离;最后一个正整数代表顺时针沿着公路走,n站到第1站的距离。

第三行输入两个正整数xy,代表小美的出发地和目的地。

1n10^5

1ai10^9

1x, yn

输出描述

一个正整数,代表小美走的最短距离

示例1

输入

3

1 2 2

2 3

输出

2

示例2

输入

3

1 2 2

1 3

输出

2

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

int main() {
    int n;
    cin >> n;
    vector<long long> distance(n + 1, 0);  

    for (int i = 1; i <= n; i++) {
        long long d;
        cin >> d;
        distance[i] = distance[i - 1] + d;
    }

    int x, y;
    cin >> x >> y;
    if (x > y) swap(x, y);  

    long long clockwise = distance[y - 1] - distance[x - 1];
    long long counterclockwise = distance[n] - clockwise;

    cout << min(clockwise, counterclockwise) << endl;

    return 0;
}

第三题

小美有个矩形的蛋糕,共分成了nm列,共n×m个区域,每个区域是—个小正方形,已知蛋糕每个区域都有一个美味度。她想切一刀把蛋糕切成两部分,自己吃一部分,小团吃另一部分。

小美希望两个人吃的部分的美味度之和尽可能接近,请你输出|S1-S2|的最小值。(其中S1代表小美吃的美味度,S2代表小团吃的美味度)

请务必保证,切下来的区域都是完整的,即不能把某个小正方形切成两个小区域。

输入描述

第一行输出两个正整数nm,代表蛋糕区域的行数和列数。接下来的n,每行输入m 个正整数aij,用来表示每个区域的美味度。

1n, m10^3

1aij10^4

输出描述

一个整数,代表|S1-S2|的最小值。

示例1

输入

2 3

1 1 4

5 1 4

输出

0

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

int main() {
    int n, m;
    cin >> n >> m;

    vector<vector<int>> cake(n, vector<int>(m));
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> cake[i][j];
        }
    }

    int total = 0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            total += cake[i][j];
        }
    }

    int minDiff = total;

    // 沿行切
    int 

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

本专栏主要发布嵌入式软件开发相关岗位2023年(2024届)的笔试真题(嵌入式软件开发、通用软件开发、C/C++软件开发、算法工程师、数据开发、测试开发等)主要是算法编程题,其中一些岗位笔试含有对应的选择题、填空题、简单题。

全部评论

相关推荐

兄弟们,绩效自评一定得给自己打A啊!千万别谦虚给低分,不然领导正愁给谁高分,你这不就“主动请缨”了嘛,而且多数领导不会给你更高分。我几年前试用期绩效自评打了B,领导就给了同等级,还好是试用期。真别等领导主动给高评价!
准备进厂的劳伦斯很迷人:小学时候有个册子 自评 小组 老师 我谦虚打了个b 小组别人给我打b 老师来句我觉得能给他打a 但是小组长说他自评是b怎么能打高呢 那时候我才明白的道理
点赞 评论 收藏
分享
秋国🐮🐴:拿到你简历编号然后让你知道世间险恶
点赞 评论 收藏
分享
评论
5
17
分享

创作者周榜

更多
牛客网
牛客企业服务