蚂蚁集团笔试 蚂蚁集团软件算法笔试

订阅专栏,方便查阅,时刻更新各厂软件算法笔试https://blog.nowcoder.net/zhuanlan/0oDWVm

题目1:

小红拿到了一个数组,她可以进行怡好一次操作:选择两个相邻元素将它们合井,合并后的新元素为原来的两个元素之和。

小红想知道,操作1次后数组的极差的最小值是多少?

数组的极差为:数组的最大值减最小值。

输入描述

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

2<=n<10^5,1<ai<10^9

输出描述

一个整数,代表操作后的极差最小值。

输入

3

1 4 5

输出

0

#include <iostream>
#include <vector>
#include <algorithm>
#include <limits.h>
using namespace std;

int n;
vector<int> a, pre_max, pre_min, suf_max, suf_min;

int get_max(int i) {
    int ret = a[i] + a[i+1];
    if (i+2 < n) {
        ret = max(ret, suf_max[i+2]);
    }
    if (i-1 >= 0) {
        ret = max(ret, pre_max[i-1]);
    }
    return ret;
}

int get_min(int i) {
    int ret = a[i] + a[i+1];
    if (i+2 < n) {
        ret = min(ret, suf_min[i+2]);
    }
    if (i-1 >= 0) {
        ret = min(ret, pre_min[i-1]);
    }
    return ret;
}

int main() {
    cin >> n;
    a.resize(n);
    pre_max.resize(n);
    pre_min.resize(n);
    suf_max.resize(n);
    suf_min.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    pre_max[0] = pre_min[0] = a[0];
    for (int i = 1; i < n; i++) {
        pre_max[i] = max(pre_max[i-1], a[i]);
        pre_min[i] = min(pre_min[i-1], a[i]);
    }

    suf_max[n-1] = suf_min[n-1] = a[n-1];
    for (int i = n-2; i >= 0; i--) {
        suf_max[i] = max(suf_max[i+1], a[i]);
        suf_min[i] = min(suf_min[i+1], a[i]);
    }

    int ans = INT_MAX;
    for (int i = 0; i < n-1; i++) {
        int mx = get_max(i);
        int mi = get_min(i);
        ans = min(ans, mx-mi);
    }

    cout << ans << endl;
    return 0;
}

题目2:

小红非常喜欢‘R’字符,而不喜欢‘B’字符。因此她定义字符串的权值为字符‘R’的出现次数。例如

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

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

全部评论
这个是如何报名呢?
点赞 回复 分享
发布于 2023-05-02 22:09 广东
这是什么时候的考试?
点赞 回复 分享
发布于 2023-05-03 11:51 广东
mark
点赞 回复 分享
发布于 2023-05-10 11:37 广东
m
点赞 回复 分享
发布于 2023-05-10 15:23 广东
m
点赞 回复 分享
发布于 2023-05-11 12:02 广东
m
点赞 回复 分享
发布于 2023-05-11 18:38 广东

相关推荐

预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
勇敢的联想人前程似锦:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
6 5 评论
分享
牛客网
牛客企业服务