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:面试华为的有机试的同学,可以找我,我还可以给你传授点不为人知的经验。

  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/baoyi/p/test.html
Copyright © 2011-2022 走看看