9.2 小米笔试面经- 编程题 & 题解

alt

考试平台: 赛码

时间: 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%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论
点赞 回复 分享
发布于 2023-09-05 21:56 浙江

相关推荐

头像
10-22 19:18
上海大学 后端
jopajhhdjwnqk:水印都叠杀人书了
点赞 评论 收藏
分享
20 25 评论
分享
牛客网
牛客企业服务