笔试时间:2024年08月24日 秋招 阿里灵犀互娱  历史笔试传送门:2023秋招笔试合集  第一题   题目:减一  给出一组数,求出最长的子串。使得这个子串中的数最大值和最小值的差值最大为1。 如1 5 4 1 2 4 2 5 5。最长子串为5 4 4 5 5,长度为5。  输入描述  第一行为一整数n(1<=n<=100),表示整数的个数。   下一行为n个整数,以空格分割,每个整数的值小于10^9。  输出描述  输出一个整数,为最长子串长度。  样例输入     6   4 6 5 3 3 1    样例输出     3    参考题解  模拟。  C++:[此代码未进行大量数据的测试,仅供参考]  #include <iostream>#include <vector>#include <algorithm>using namespace std;int max_length_subarray(vector<int>& arr) {    if (arr.empty()) {        return 0;    }    sort(arr.begin(), arr.end());    int start = 0;    int max_length = 1;    for (int end = 1; end < arr.size(); ++end) {        if (arr[end] - arr[start] > 1) {            ++start;        }        max_length = max(max_length, end - start + 1);    }    return max_length;}int main() {    int n;    cin >> n;    vector<int> nums(n);    for (int i = 0; i < n; ++i) {        cin >> nums[i];    }    cout << max_length_subarray(nums) << endl;    return 0;}  Java:[此代码未进行大量数据的测试,仅供参考]  import java.util.*;public class Main {    public static int maxLengthSubarray(List<Integer> arr) {        if (arr.isEmpty()) {            return 0;        }        Collections.sort(arr);        int start = 0;        int maxLength = 1;        for (int end = 1; end < arr.size(); ++end) {            if (arr.get(end) - arr.get(start) > 1) {                ++start;            }            maxLength = Math.max(maxLength, end - start + 1);        }        return maxLength;    }    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt();        List<Integer> nums = new ArrayList<>(n);        for (int i = 0; i < n; ++i) {            nums.add(scanner.nextInt());        }        System.out.println(maxLengthSubarray(nums));        scanner.close();    }}  Python:[此代码未进行大量数据的测试,仅供参考]  n = int(input())nums = list(map(int, input().split()))def max_length_subarray(arr):    if not arr:        return 0        arr.sort()      start = 0    max_length = 1        for end in range(1, len(arr)):        if arr[end] - arr[start] > 1:            start += 1        max_length = max(max_length, end - start + 1)        return max_lengthprint(max_length_subarray(nums))  第二题  题目:小杰的灵犀之旅  小杰在异世界探险时发现了一个有着奇妙法则的地方,灵犀帝国。这个法则让灵犀帝国的人不再为食物而烦恼。每逢每个月的最后一天,在灵犀帝国中的人会进入到其对应的奇妙领域,届时会有n轮食物大派送降临。奇妙领域存在着一条m个格子的路,在每轮的食物大派送中会在[l, r]的格子上放一颗灵果。此时小杰已经进入了奇妙领域,如果小杰将n轮食物大派送的所有灵果取走会拥有多少颗灵果呢?  输入描述  第一行包含一个正整数T (T < 10),T代表数据组数。   接下来T组数据,每组数据第一行两个正整数n,m。  第二行开始有n行,每行两个正整数l,r (1 <= l <= m, l <= r <= m)  输出描述  对于每组输入输出小杰拥有灵果的个数,由于答案可能过大所以答案%998244353。  说明  补充说明对于30%的数据 1 <= n <= 1000, 1 <= m <= 1000 对于50%的数据 1<= n <= 10000, 1 <= m <= 10000 对于100%的数据 1 <= n <= 100000, 1 <= m <= 100000  样例输入     2   1 2   1 2   3 6   1 2   1 2   4 5    样例输出     2   6    参考题解  将题目所给的所有区间累加即可,注意取模。  C++:[此代码未进行大量数据的测试,仅供参考]  #include <iostream>using namespace std;int main() {    int T;    cin >> T;    for (int i = 0; i < T; i++) {        int n, m;        cin >> n >> m;                long long res = 0;        for (int j = 0; j < n; j++) {            int l, r;            cin >> l >> r;            res += r - l + 1;            res %= 998244353;        }                cout << res << endl;    }    return 0;}  Java:[此代码未进行大量数据的测试,仅供参考]  import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int T = scanner.nextInt();        for (int i = 0; i < T; i++) {            int n = scanner.nextInt();            int m = scanner.nextInt();                        long res = 0;            for (int j = 0; j < n; j++) {                int l = scanner.nextInt();                int r = scanner.nextInt();                res += r - l + 1;                res %= 998244353;            }                        System.out.println(res);        }                scanner.close();    }}  Python:[此代码未进行大量数据的测试,仅供参考]  MOD = 998244353def main():    T = int(input())        for _ in range(T):        n, m = map(int, input().split())        res = 0                for _ in range(n):            l, r = map(int, input().split())            res += r - l + 1            res %= MOD                print(res)if __name__ ==
点赞 0
评论 0
全部评论

相关推荐

Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
07-21 12:41
已编辑
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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