zoukankan      html  css  js  c++  java
  • 华为机试经验

    题目说明:

    第一道题:

    举办一场8小时的聚会,时间段从12:00到20:00点,让来访的客人事先填好到达的时间和离开的时间,为了掌握聚会期间的座位数目,需要先估计不同时间的最大客人数量。

    1.到达和离开的时间,以整点计算,输入为整数,比如“12,18”表示客人到达的时间为12点后13点前,离开的时间是17点后18点前。

    2.按小时区间统计客人的数量,需要统计[12,13),[13,14)….[19,20)共有8个时间段的最大客人数量。

    3.假设邀请的客人最多100个。

    假设输入:

    12,15

    16,17

    12,20

    -1,-1

    程序要求的输出结果为:

    [12,13):2

    [13,14):2

    [14,15):2

    [15,16):1

    [16,17):2

    [17,18):1

    [18,19):1

    [19,20):1

    解题思路如下:

    如上图,就是要将每个时间段的值加入map做一个统计。

    代码如下:

    package com.example.zookeepertest.web;


    import javax.sound.midi.Soundbank;
    import java.io.IOException;
    import java.lang.reflect.Array;
    import java.util.*;
    import java.util.stream.Collectors;
    public class JvmTest {
    public static void main(String[] args) throws IOException {

    Map<String, Integer> result = new HashMap<>();
    String temp = "16,18";
    String[] split = temp.split(",");

    int a = Integer.valueOf(split[0]);
    int b = Integer.valueOf(split[1]);
    if (a > b || a < 12 || b > 20) {
    return;
    }

    for (int i = a; i < b; i++) {
    String key = "[" + i + "," + (i + 1) + ")" + ":";
    if (result.containsKey(key))
    result.put(key, result.get(key) + 1);
    else
    result.put(key, 1);
    }

    result.entrySet().stream().sorted(
    Map.Entry.<String, Integer>comparingByKey().reversed()).collect(
    Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (o1, o2) -> o1, LinkedHashMap::new));

    result.entrySet().forEach(e -> System.out.println(e.getKey() + e.getValue()));

    }
    }




    难点:map排序,这个是我写的时候在网上搜的。

    其他就是那个算法。理解了就是一行代码。

    第二道题:

    流水线N个产品每个产品有M个零件,Aij表示生产该零件的生产时间
    需满足以下2个条件
    1. Aij需要生产出来必须保证Ai-1 j先生产出来
    2. Aij需要生产出来必须保证Ai j-1先生产出来

    测试用例有
    1 3
    3.0
    2.0
    1.0
    输出6.000000

    3 1
    3.0 2.0 1.0
    输出6.000000

    用例3:
    2 4
    10.000000 5.000000
    4.500000 3.000000
    4.499999 2.000000
    2.000000 1.000000

    21.999999
     
    这道题 现在我也没有看懂什么意思,题的要求 也不太全了。根据输入,输出代码如下:
    public class JvmTest {
    public static void main(String[] args) throws IOException {
    BigDecimal[][] arrays = new BigDecimal[4][2];
    arrays[0][0] = new BigDecimal(10.000000);
    arrays[0][1] = new BigDecimal(5.000000);
    arrays[1][0] = new BigDecimal(4.500000);
    arrays[1][1] = new BigDecimal(3.000000);
    arrays[2][0] = new BigDecimal(4.499999);
    arrays[2][1] = new BigDecimal(2.000000);
    arrays[3][0] = new BigDecimal(2.000000);
    arrays[3][1] = new BigDecimal(1.000000);

    BigDecimal result = new BigDecimal(0.0);

    for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 2; j++) {
    result = result.add(arrays[i][j]);
    }
    }
    result = result.subtract(arrays[0][0]).setScale(6, BigDecimal.ROUND_HALF_DOWN);
    System.out.println(result);

    }
    第三道题:

    总结:

    华为机试 我是二道题,一道200,共400分,

    在机试的时候,一定要 沉着冷静,

    第二道题是数组,直接没有头绪。

    所以,此生 与 华为无缘了。

    至此,祝愿其他同学 一路平安。

    ps:面试华为的有机试的同学,可以找我,我还可以给你传授点不为人知的经验。

  • 相关阅读:
    DS博客作业08--课程总结
    DS博客作业07-----查找
    DS博客作业06--图
    DS博客作业05--树
    DS博客作业08--课程总结
    DS博客作业07--查找
    DS博客作业06--图
    DS博客作业05--树
    DS博客作业03--栈和队列
    DS博客作业02--线性表
  • 原文地址:https://www.cnblogs.com/baoyi/p/test.html
Copyright © 2011-2022 走看看