三题120分钟,分值=100+200+300。需要自己处理输入。
华为是谁?
华为是全球领先的信息与通信技术( ICT)解决方案供应商,专注于 ICT 领域,坚持稳
健经营、持续创新、开放合作,在电信运营商、企业、终端和云计算等领域构筑了端到端
的解决方案优势,为运营商客户、企业客户和消费者提供有竞争力的 ICT 解决方案、产品
和服务,并致力于使能未来信息社会、 构建更美好的全联接世界。目前,华为有 17 万多
名员工,业务遍及全球 170 多个国家和地区,服务全世界三分之一以上的人口。
我们为世界带来了什么?
为客户创造价值。华为和运营商一起,在全球建设了 1,500 多张网络,帮助世界超过
三分之一的人口实现联接。华为和企业客户一起,以开放的云计算和敏捷的企业网络,助
力平安城市、金融、交通、能源等领域实现高效运营和敏捷创新。华为智能终端和智能手
机,正在帮助人们享受高品质的数字工作、生活和娱乐体验。
推动行业良性发展。华为主张开放、合作、共赢,与上下游合作伙伴及友商合作创新、
扩大产业价值,形成健康良性的产业生态系统。华为加入 300 多个标准组织、产业联盟和
开源社区,累计提案 4.3 万篇。我们面向云计算、NFV/SDN、5G 等新兴热点领域,与产业
伙伴分工协作,推动行业持续良性发展。
促进经济增长。华为为所在国家不仅带来直接的纳税、就业促进、产业链带动效应,
更重要的是通过创新的 ICT 解决方案打造数字化引擎,推动各行各业数字化转型,促进经
济增长,提升人们的生活质量与福祉。
促进社会可持续发展。作为负责任的企业公民,华为致力于消除全球数字鸿沟;在西
非埃博拉疫区、日本海啸核泄漏、中国汶川大地震等重大灾难现场,我们深知灾难面前通
信的重要性,我们选择了坚守;我们在全球开展 “未来种子”项目,为各国青年学生提
供来中国培训实习的机会。

  1. 最大绝对值之差
    树。找出一个节点,把这个节点与parent隔断,成为新的树的root。目标是最大化两颗树的差值。返回应该割裂开的节点,如果出现平局,返回索引较小的。
    第一行输入是n,表示一共多少节点。第二行是所有节点的值。之后是节点的关系,【parent,child】。

input:
4
4 9 -7 -8
0 1
0 3
1 2

output: 3
注意,在关系中左child一定会比右child先出现。

public class Main {static int largestGap = 0;static int res = 100000;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();Node[] nodes = new Node[n];boolean[] notRoot = new boolean[n];for (int i = 0; i < n; i++) {int v = sc.nextInt();nodes[i] = new Node(i, v);}while (sc.hasNextInt()) {int p = sc.nextInt();int c = sc.nextInt();Node par = nodes[p];Node child = nodes[c];notRoot[c] = true;if (par.left == null)par.left = child;elsepar.right = child;}Node root = null;for (int i = 0; i < n; i++) {if (!notRoot[i]) {root = nodes[i];break;}}subtreeSum(root);findGap(root, 0);System.out.println(res);}private static void findGap(Node root, int parVal) {if (root == null)return;int left = 0;int right = 0;
//        System.out.printf("findgap(), root.id=%d, largestGap=%d, res=%d\n", root.idx, largestGap,
//                        res);if (root.left != null) {left = root.left.sum;int leftgap = Math.abs(root.sum + parVal - 2 * left);
//            System.out.printf("left=%d, leftgap=%d\n", left, leftgap);if (leftgap > largestGap) {largestGap = leftgap;res = root.left.idx;} else if (leftgap == largestGap && root.left.idx < res) {res = root.left.idx;}}if (root.right != null) {right = root.right.sum;int rightgap = Math.abs(root.sum + parVal - 2 * right);
//            System.out.printf("right=%d, rightgap=%d\n", right, rightgap);if (rightgap > largestGap) {largestGap = rightgap;res = root.right.idx;} else if (rightgap == largestGap && root.right.idx < res) {res = root.right.idx;}}
//        System.out.printf("largestGap=%d, res=%d\n", largestGap, res);findGap(root.left, parVal + root.val + right);findGap(root.right, parVal + root.val + left);}private static int subtreeSum(Node root) {if (root == null)return 0;int left = subtreeSum(root.left);int right = subtreeSum(root.right);int s = left + right + root.val;root.sum = s;return s;}
}class Node {int idx;int val;int sum;Node left;Node right;public Node(int i, int v) {idx = i;val = v;sum = 0;left = null;right = null;}
}
  1. 梅花桩
    格子表示可跳跃的步数。第一行是m,n,表示棋盘的大小。求到达最右下角最少的步数。如果无法到达,返回-1。
public class Main {public static void main(String[] args) {final int INF = 100*100*10+1;Scanner sc = new Scanner(System.in);String[] input = sc.nextLine().split(",");int m = Integer.parseInt(input[0]);if (m <= 0) {System.out.println("-1");return;}int n = Integer.parseInt(input[1]);if (n <= 0) {System.out.println("-1");return;}int[][] grid = new int[m][n];int[][] dp = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grid[i][j] = sc.nextInt();dp[i][j] = INF;}}dp[0][0] = 0;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grid[i][j] == 0) continue;// jump to rightfor (int k = 1; k <= grid[i][j]; k++) {if (j+k >= n) break;if (grid[i][j+k] == 0) continue;dp[i][j+k] = Math.min(dp[i][j+k], dp[i][j]+1);}// jump to bottomfor (int k = 1; k <= grid[i][j]; k++) {if (i+k >= m) break;if (grid[i+k][j] == 0) continue;dp[i+k][j] = Math.min(dp[i+k][j], dp[i][j]+1);}}}if (dp[m-1][n-1] >= INF) {System.out.println("-1");return;}System.out.println(dp[m-1][n-1]);}private static void print2d(int[][] arr) {int m = arr.length;for (int i = 0; i < m; i++)System.out.println(Arrays.toString(arr[i]));System.out.println();}
}
  1. 最短编译时间
    只过5%的test case,时间来不及。
    不同项目需要不同的依赖。第一行是目标项目。之后每一行表示一个项目所依赖的项目和编译时间,格式为[项目名称,编译时间,*依赖项目]。依赖的项目必须要先做完。
    input:
    module3
    module1,10
    module2,5
    module3,10,module1,module2

output: 20

input:
module2
module2,10,module1

output: -1

input:
module2
module2,10,module1
module1,10,module2

output: -1

public class Main {static boolean valid = true;public static void main(String[] args) {Scanner sc = new Scanner(System.in);String goal = sc.nextLine().trim();Map<String, Integer> duration = new HashMap();Map<String, Set<String>> prereqs = new HashMap();while (sc.hasNextLine()) {String[] input = sc.nextLine().split(",");int d = Integer.parseInt(input[1]);duration.put(input[0], d);Set<String> pre = new HashSet();for (int i = 2; i < input.length; i++)pre.add(input[i]);prereqs.put(input[0], pre);}int res = getTime(goal, duration, prereqs, new HashSet());if (!valid)System.out.println("-1");elseSystem.out.println(res);}private static int getTime(String cur, Map<String, Integer> duration, Map<String, Set<String>> prereqs, Set<String> seen) {if (!valid) return -1;if (!prereqs.containsKey(cur) || seen.contains(cur)) {valid = false;return -1;}seen.add(cur);Set<String> pres = prereqs.get(cur);int t = duration.get(cur);int front = 0;for (String pre: pres) {front = Math.max(front, getTime(pre, duration, prereqs, seen));}// 这行是考完之后才加的,忘记backtrackseen.remove(cur); return t+front;}
}

如果不加上最后有一行代码(有注释那行),假设两个模块同时依赖一个模块,会出问题。可惜当时没有想到这种情况,测试平台所有测试用例是用户不可见的(只能自测)。
特别感谢Oscar哥帮忙debug。

2022校招:华为笔试相关推荐

  1. 2022.9.7华为笔试

    第一题: public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while (scanner ...

  2. 别提996!腾讯2022校招起薪40w,大厂招人铁了心要卷

      转载于 新智元   来源:知乎 编辑:桃子 好困 [新智元导读]2022年校招全面开启,各互联网大厂近日纷纷揭开不同岗位的薪资.腾讯首发2022年校招薪资,40万起步.网友,计算机yyds! 20 ...

  3. 字节跳动2022校招研发提前批宣讲会,同学们最关心的10个问题

    字节跳动 2022 校招研发提前批 7 场宣讲会,已经全部结束啦,不知道你是否已经充分了解了字节跳动,选好了想去的岗位和团队呢? 如果你真的真的真的没有时间,错过了宣讲会的话,不要担心,我们整理了宣讲 ...

  4. ❤️TikTok字节跳动编程题实战2022校招——吐血分享总结(第一弹)。

    ❤️TikTok字节跳动编程题实战2022校招--吐血分享总结. 前言+说明 一.算法编程题(种树) 二.算法编程题(小A的吃鸡之旅) 三.算法编程题(有序最大K位数) 四.算法编程题(测试计划的最大 ...

  5. 别提996、腾讯2022校招起薪40w,大厂招人铁了心要卷

    来源:新智元(ID:AI_era) 2022 年校招已经全面开启了,然而大厂招人再次卷起来了- 近日,「腾讯 2022 校招大厂薪资首发,白菜总包接近 40w 」这一话题迅速冲上热搜. 许多网友纷纷表 ...

  6. 2022校招百度提前批校园招聘

    2022校招百度提前批校园招聘 文章目录 2022校招百度提前批校园招聘 起止日期:2022年07月05日-2022年08月27日 起止日期:2022年07月05日-2022年08月27日 百度202 ...

  7. 360 c语言 笔试,奇虎360校招的笔试真题

    选择题有45个? 好像是,三道简答题, 简答题: 1.设计一个课程表(包括目标人群.核心功能.特色设计); 2.说ATM的缺点,改进方法; 3.如何让李开复等互联网大牌关注你的微薄? 选择题记得不是很 ...

  8. 2022年华为杯中国研究生数学建模竞赛B题思路

    一.思路获取方式 获取代码方式: 2022年华为杯中国研究生数学建模竞赛思路 备注: 点击上面蓝色字体2022年华为杯中国研究生数学建模竞赛思路,扫描上面二维码,付费29.9元订阅海神之光博客付费专栏 ...

  9. 2020-09-13 滴滴-2021校招在线笔试-DE数据开发试卷

    2020-09-13 滴滴-2021校招在线笔试-DE数据开发试卷 1. D星群岛 题目: D星群岛由n个小岛组成.为了加强小岛居民之间的交流,头目决定启动一个造桥工程,将全部n个岛连接到一起.由于受 ...

  10. 哔哩哔哩2018校招前端笔试

    前言 前几日,哔哩哔哩在电子科大清水河校区举行了校招宣讲会.B站不用多说,中国最大的同性交友网站,不去工作也能去看看. 当晚便进行了部分笔试,下面是我参加的前端笔试试题和我自己的解答,分享给大家. 博 ...

最新文章

  1. VS2008正式版创建silverlight项目失败的解决办法
  2. docker 安装git_docker随手笔记第十二节 jenkins+docker+nginx+纯静态页面配置
  3. Swift和Objective-C混编
  4. 一对矩阵的相关性_矩阵分析学习笔记(1)
  5. HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP错误解决方法
  6. SQL Server使用convert对datetime日期数据进行获取
  7. netcore之判断系统
  8. iOS设计模式解析(三)适配器模式
  9. Atitit attilax在自然语言处理领域的成果
  10. C语言里的符号重载《C专家编程》
  11. 手机NFC天线的集总参数设计
  12. 百度大脑人脸情绪实时识别攻略
  13. 计算机组成原理计算题整理
  14. 【工具】kindle 怎么用微信读书
  15. java 协方差矩阵_协方差矩阵概念(易理解)
  16. 开发微信支付功能之微信限制金额说明
  17. 记一些Linux/centos的基础运维命令
  18. 计算机的维修有两种,两个汽车电脑维修案例 你未必会修
  19. 对于“条件竞争”的利用
  20. Hive SQL 每日SQL

热门文章

  1. Win7、windows 2008 IIS7.5下载安装方法以及教程 IIS7配置PHP环境图文教程(fastcgi快速最新版)
  2. C语言 详解如何编写闪烁显示字符串的函数
  3. “计算机程序设计能力考试(乙级)”真题刷题(三)
  4. Vulnstack(四)
  5. python类的使用的生物学应用_python类的使用的生物学应用_Python 类的使用
  6. python判断两个列表是否相同_如何检查两个元组列表是否相同
  7. system占用cpu过高查找问题思路
  8. iCloud中的照片如何导出到个人电脑中进行储存?
  9. 一本修炼秘籍,带你打穿文件上传的21层妖塔(1)
  10. Android手机不root查看/data/data/包名目录下的文件