2023 得物笔试题 0823
笔试时间:2023年8月23日 秋招
第一题
题目:开幕式排练
导演在组织进行大运会开幕式的排练,其中一个环节是需要参演人员围成一个环形。演出人员站成了一圈,出于美观度的考虑,导演不希望某一个演员身边的其他人比他低太多或者高太多。
现在给出n个参演人员的身高,问在他们站成一圈时,相邻演员的身高差的最大值至少是多少? 请你帮忙计算。
输入描述
输入包括两行,第一行有1个正整数,代表人数n。
第二行有n个空格隔开的正整数h表示第i个演员的身高。
数据保证2<=n<=10^5,1<=hi<=10^9。
输出描述
输出包括一个正整数,表示答案。
样例输入
5
2 1 1 3 2
样例输出
1
参考题解
将数组排序,然后声明一个新数组,均匀的向两边插入元素,最后遍历一遍数组求出最大值。
C++:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n;
cin>>n;
vector<int> p(n);
for(int i=0;i<n;i++) cin>>p[i];
sort(p.begin(),p.end());
vector<int> ans;
ans.push_back(p[n-1]);
int j=0;
for(int i=n-2;i>=0;i--){
if(j % 2==0) ans.push_back(p[i]);
else ans.insert(ans.begin(),p[i]);
j^=1;
}
int maxx=0;
for(int i=0;i<n;i++)
maxx=max(maxx,abs(ans[i]-ans[(i+1)%n]));
cout <<maxx<< endl;
}
Java:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
List<Integer> p = new ArrayList<>();
for (int i = 0; i < n; i++) {
p.add(sc.nextInt());
}
Collections.sort(p);
List<Integer> ans = new ArrayList<>();
ans.add(p.get(n - 1));
int j = 0;
for (int i = n - 2; i >= 0; i--) {
if (j % 2 == 0) {
ans.add(p.get(i));
} else {
ans.add(0, p.get(i));
}
j ^= 1;
}
int maxx = 0;
for (int i = 0; i < n; i++) {
maxx = Math.max(maxx, Math.abs(ans.get(i) - ans.get((i + 1) % n)));
}
System.out.println(maxx);
}
}
Python:
n = int(input())
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023 秋招笔试题汇总解析 文章被收录于专栏
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。
阿里巴巴灵犀互娱公司福利 636人发布

