京东笔试 京东笔试题 0315
笔试时间:2025年03月15日
历史笔试传送门:
第一题
题目:数组价值
给你一个长度为n的数组,现在定义这个数组的价值为这个数组中的最大值减去最小值,现在你有一次机会选择其中的任意的一个数将其删除,我们想知道所有可能的选择中,能够得到的n-1个序列的价值最小为多少?
输入描述
对于每一组测试数据,第一行输入一个整数T,代表有T组测试数据。
对于每一组测试数据,先输入一个整数n,代表序列的长度。
接下来输入n个数,代表这个序列中的每一个元素的值。
输出描述
对于每一组测试数据,输出一个答案代表价值的最小值。
样例输入
1
4
1 3 3 7
样例输出
2
说明:
可以删除7,得到的序列为[1,3,3],得到的数组的价值是 2。
参考题解
贪心,因为最后答案只和最小值和最大值有关,因此考虑删除最小值或者最大值。分别对两种情况取较小答案即可。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <bits/stdc++.h> using namespace std; int main() { int t; cin >> t; for (int i = 0; i < t; ++i) { int n; cin >> n; vector<int> a(n); for (int j = 0; j < n; ++j) cin >> a[j]; sort(a.begin(), a.end()); int x = a[n - 2] - a[0]; int y = a[n - 1] - a[1]; cout << min(x, y) << endl; } return 0; }
Java:[此代码未进行大量数据的测试,仅供参考]
Python:[此代码未进行大量数据的测试,仅供参考]
第二题
题目:小兴的涂色面积
小兴希望你帮忙计算以下图形的黑色面积。你能帮帮她吗?该图形的生成方式是:第一阶:画一个半径为r的圆,并切掉左上部分的四分之一。
第二阶:在第一阶的内部画一个尽可能大的圆,切掉右下的四分之一,将这一部分涂成白色。
第三阶:将第二阶的新增白色部分的内部画一个尽可能大的圆,切掉四分之一后涂成黑色。
后面以此类推。
输入描述
两个正整数r和n,分别代表初始的圆半径以及图形的阶数。
输出描述
黑色部分的面积。如果你的答案和标准答案的误差不超过10^-6,则认为你的答案正确。
样例输入一
1 1
样例输出一
2.3561945
样例输入二
2 4
样例输出二
7.5103699
参考题解
可以观察出偶数次会使黑色面积减小,奇数次会使黑色面积增大,并且每次圆的半径会缩小一半。使用acos(-1.0)得到pi,按照次数模拟即可。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <bits/stdc++.h> using namespace std; const double pi = acos(-1.0); int main() { double r; int n; cin >> r >> n; double total = pi * r * r * 3 / 4; for (int i = 2; i <= n; ++i) { r = r / 2; double m = pi * r * r; if (i % 2 == 0) { total -= m * 3 / 4; } else { total += m * 3 / 4; } } cout << fixed << setprecision(7) << total << endl; return 0; }
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner; public class CircleAreaPattern { public static void main(String[] args) { final double pi = Math.acos(-1.0);
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南