【2024-01-24】华为秋招笔试两道编程题解

2024-01-27 18:36

本文主要是介绍【2024-01-24】华为秋招笔试两道编程题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】

订阅专栏【进阶版】2023最新大厂笔试真题 & 题解,不容错过的宝藏资源!

第一题:玻璃球计分

题目描述

小盖有根绳子,上面穿了很多玻璃球,玻璃球由红绿蓝二种颜色组成,其中红色球1分,绿色球2分,蓝色球3分,现在对同颜色连在一起的球有一个积分奖励规则当这个球与前面1个球颜色相同会给此球奖励1分,当这个球与前面2个球的颜色都相同会给此球奖励2分,以此类推,当这个球与前面3个球的颜色都相同会给此球奖励3分。

现在请从前往后计算这串玻璃球的累计分数。其中红色玻璃球用字符r表示,绿色玻璃球用字符g表示,蓝色玻璃球用字符b 表示

输入描述

1个string由r、g、b组成的字符串

1<=string.length<=10000

输出描述

经过计算后的得分

样例

输入

rgb

输出

6

样例说明

1+2+3=6

思路

模拟,思路很简单,就是遍历字符串,对于当前字符,判断与前一个字符是否相同,如果相同就更新计数器,累加得分;如果不相同,就重置计数器,更新前一个字符,再计算得分。

代码

Java版本

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.next();char prec = 'a';int cnt = 0, res = 0;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c == prec) {cnt++;res += (c == 'r') ? 1 + cnt : (c == 'g') ? 2 + cnt : 3 + cnt;} else {cnt = 0;prec = c;res += (c == 'r') ? 1 : (c == 'g') ? 2 : 3;}}System.out.println(res);}
}
// vx公众号关注TechGuide,代码可能需要少量调试。

CPP版本

#include <iostream>
using namespace std;int main() {string s;cin >> s;char prec = 'a';int cnt = 0, res = 0;for (int i = 0; i < s.length(); i++) {char c = s[i];if (c == prec) {cnt++;res += (c == 'r') ? 1 + cnt : (c == 'g') ? 2 + cnt : 3 + cnt;} else {cnt = 0;prec = c;res += (c == 'r') ? 1 : (c == 'g') ? 2 : 3;}}cout << res << endl;return 0;
}
// vx公众号关注TechGuide,代码可能需要少量调试。

第二题:大模型训练

题目描述

AI大模型学习大量的训练样本,通过大量参数拟合出样本背后复杂的高维概率密度分布关系。由于训练数据量越来越大,参数越来越多,模型越来越大,传统超级计算机算力和资源有限无法满足训练需求,假设可通过量了计算机来进行人模型训练现有简化后训练了任务模型列表 tasks, tasks[i] 表示第 i个子任务模型的算力需求,为了保证模型计算的SLA要求所有的子任务模型在T个时刻内完成计算。

每个时刻,需按照给出子任务模型的算力需求列表( tasks )顺序调度到量了计算机并完成计算。任意时刻调度的多个了任务模型的算力需求总和不会超过量了计算机可承载的最人算力负荷请返回量了计算机需要提供的最低算力,可在T个时刻内计算完全部子任务模型。

输入描述

输入包括两行,第一行包含2个整数N,T,分别表示子任务模型列表长度,计算全部了任务模型的时刻要求第二行包含N个整数: tasks[1] tasks[2] tasks[3]… tasks[n] 分别表示第 i个子任务模型的算力需求。

注意:

(1) 1 <= T <= N <= 50000

(2) 1 <= tasks[i] <= 500

输出描述

输出一行,包含一个整数,表示量了计算机需要提供的。

最低算力,可在T个时刻内计算完全部子任务模型。

样例

输入

10 5
1 2 3 4 5 6 7 8 9 10

输出

15

样例说明

量子计算机需要提供的最低算力15,能够满足5个时刻内计算全部子任务模型的需要:时刻1: 1,2.3,4,5;时刻2: 6,7: 时刻3: 8: 时刻4: 9: 时刻5: 10。

思路

二分查找,计算在给定时间内完成所有子任务模型所需的最低计算能力。

代码

Java版本

import java.util.Scanner;public class QuantumComputer {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int T = scanner.nextInt();int[] tasks = new int[N];for (int i = 0; i < N; i++) {tasks[i] = scanner.nextInt();}int l = 1, r = 500 * 50000;while (l < r) {int mid = (l + r) >> 1;if (check(tasks, T, mid)) {r = mid;} else {l = mid + 1;}}System.out.println(r);}private static boolean check(int[] tasks, int T, int x) {int cnt = 1, sum = 0;for (int r = 0; r < tasks.length; r++) {if (sum + tasks[r] <= x) {sum += tasks[r];} else {cnt++;sum = tasks[r];}}return cnt <= T;}
}
// vx公众号关注TechGuide,代码可能需要少量调试。

CPP版本

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;bool check(const vector<int>& tasks, int T, int x) {int cnt = 1, sum = 0;for (int r = 0; r < tasks.size(); r++) {if (sum + tasks[r] <= x) {sum += tasks[r];} else {cnt++;sum = tasks[r];}}return cnt <= T;
}int main() {int N, T;cin >> N >> T;vector<int> tasks(N);for (int i = 0; i < N; i++) {cin >> tasks[i];}int l = 1, r = 500 * 50000;while (l < r) {int mid = (l + r) >> 1;if (check(tasks, T, mid)) {r = mid;} else {l = mid + 1;}}cout << r << endl;return 0;
}
// vx公众号关注TechGuide,代码可能需要少量调试。

这篇关于【2024-01-24】华为秋招笔试两道编程题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/651123

相关文章

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建