9.2 小米笔试面经- 编程题 & 题解
考试平台: 赛码
时间: 2023-09-02
考试题型: 单选 15 题(3分/题) + 多选 10题 (3分/题) + 编程题 2题(10分 + 15 分)
T1 小米手机通讯校准 (10分)
题目描述
小米手机生产过程中会经过严苛的测试环节,其中包括手机通讯功能中的射频校准。射频校准会打点数据上报到云端。其中包含两组费据:第一组数据中会包含此次校准的频道号(freg)信息; 第二组会上传一批数据,包含一组频道号(freg)和其对应的损失值(loss),其中这一组频道号(freg)不会重复,且是有序的。
现在需要根据第一组数据中的频道号(freq),找到离第二组中频道号(freg)最近的那一个freq对应的loss值,如果两边一样近,则取两边loss的平均。 (注:输入为int,输出为double类型四舍五入保留1位小数)
输入猫述
包含两组数据 第一组数据中会包含此次校准的频道号(freq)信息 第二组会上传一批数据,包含一组频道号(freq)和其对应的损失值(loss),其中这一组频道号(fre)不会重复,且是有序的。
输出描述
离频道号(freq)最近的freq对应的loss值,如果两边一样近,则取两边loss的平均.
样例
输入
2800
1950:10,2000:15,3000:9
输出
9.0
题解
只需要循环走一遍找最近的 freq 并更新 loss 即可。
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int freq = Integer.parseInt(scanner.nextLine());
String[] split = scanner.nextLine().split(",");
double ans = 0;
int minDistance = Integer.MAX_VALUE;
for (int i = 0; i < split.length; i++) {
String[] str = split[i].split(":");
int f = Integer.valueOf(str[0]), loss = Integer.valueOf(str[1]);
int distance = Math.abs(f - freq);
if (distance < minDistance) {
ans = loss;
minDistance = distance;
} else if (distance == minDistance) {
ans = (ans + loss) / 2.0;
}
}
Dec
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
🔥笔试编程真题宝典💯 文章被收录于专栏
📕分享大厂机试真题深度剖析核心考点,助你速通面试。