【2024-02-02】华为秋招笔试三道编程题解
恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。
作者@TechGuide【全网同名】
订阅专栏: 【专享版】2024最新大厂笔试真题解析,错过必后悔的宝藏资源!
第一题:找出最可疑的嫌疑人
题目描述
民警侦办某商场店面盗窃率时,通过人脸识别针对嫌疑人进行编号1-100000。现在民警在监控记录中发现某个嫌疑人在被盗店面出现的次数超过了所有嫌疑人总出现次数的一半,请帮助民警尽可能高效地找到该嫌疑人的编号。
输入描述
给定一个嫌疑人的标号数组men,其中1<length(men)<1000,嫌疑人编号满足1<=men[i]<=100000
输出描述
返回出现次数超过一半的嫌疑人的编号。
如果总次数是偶数,例如4,则需要超过2次即最少3次,如果总次数是奇数,例如5,则需要超过2.5,满足条件最少是3次。若没有嫌疑人满足该条件,返回0。
样例
输入
1,1,2,2,3,3
输出
0
样例说明
第一行是嫌疑人出现记录,代表1号、2号和3号嫌疑人各出现2次因为各个嫌疑人均只出现2次,未超过6次的一半,因此没有嫌疑人满足要求,输出0。
思路
简单遍历即可。统计每个嫌疑人编号出现的次数,然后遍历次数,找到出现次数超过总次数一半的编号。
代码
Java版本
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] input = scanner.nextLine().split(",");int[] nums = new int[input.length];for (int i = 0; i < input.length; i++) {nums[i] = Integer.parseInt(input[i]);}Map<Integer, Integer> counter = new HashMap<>();for (int num : nums) {counter.put(num, counter.getOrDefault(num, 0) + 1);}for (int k : counter.keySet()) {if (counter.get(k) > nums.length / 2) {System.out.println(k);return;}}System.out.println(0);}
}
// vx公众号关注TechGuide,专业生产offer收割机。
CPP版本
#include <iostream>
#include <vector>
#include <unordered_map>using namespace std;int main() {string input;getline(cin, input);vector<int> nums;size_t pos = 0;while ((pos = input.find(',')) != string::npos) {nums.push_back(stoi(input.substr(0, pos)));input.erase(0, pos + 1);}nums.push_back(stoi(input));unordered_map<int, int> counter;for (int num : nums) {counter[num]++;}for (const auto& entry : counter) {if (entry.second > nums.size() / 2) {cout << entry.first << endl;return 0;}}cout << 0 << endl;return 0;
}
// vx公众号关注TechGuide,专业生产offer收割机。
第二题:登录赢金币
题目描述
某公司日对新用户推出大礼包,从任意一天注册开始,连续登录x天,每天可以领取一定的金币,领取金币的数量与该公司新设计的虚假世界的日历相关,该日历一年有n个月,第i个月有di天,每一年都一样。在每个月第1天会得到1个金币,第2天会得到2个金币,第3天会得到3个金币,后面依次类推。 请计算新用户注册后连续登陆x天,最多可以获取多少金币。 请注意,连续登陆可能会跨年。
输入描述
第一行包含两个整数n和x,分别表示一年中的月数和连续登陆的天数。第二行包含n个整数d1,d2,…,dn ,di表示第i个月的天数。
输出描述
打印新用户连续登录x天最多可以获取的金币数量。
样例
输入
3 2
1 3 1
输出
5
样例说明
一年中每天获取的金币数是1,1,2,3,1(对应每个月中的天数)。如果在一年中的第3天开始注册陆,最多可以获取 2+3=5 个金币。
思路
用滑动窗口。计算每个月的金币总数和连续登陆的区间内金币总数,通过滑动窗口来更新最大值。注意开始复制了一份,覆盖跨年的情况。
代码
Java版本
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int x = scanner.nextInt();int[] d = new int[n * 2];for (int i = 0; i < n; i++) {d[i] = scanner.nextInt();d[i + n] = d[i];}int ans = 0;int curSum = 0;int cur = 0;int l = 0;for (int i = 0; i < n * 2; i++) {curSum += d[i];cur += d[i] * (d[i] + 1) / 2;while (curSum > x) {curSum -= d[l];cur -= d[l] * (d[l] + 1) / 2;l++;}int curAns = cur;int cnt = x - curSum;if (l > 0) {curAns += sumup(d[l - 1] - cnt + 1, d[l - 1]);ans = Math.max(ans, curAns);}}System.out.println(ans);}private static int sumup(int l, int r) {return r * (r + 1) / 2 - l * (l - 1) / 2;}
}// vx公众号关注TechGuide,专业生产offer收割机。
CPP版本
#include <iostream>
#include <vector>using namespace std;int sumup(int l, int r) {return r * (r + 1) / 2 - l * (l - 1) / 2;
}int main() {int n, x;cin >> n >> x;vector<int> d(n * 2);for (int i = 0; i < n; i++) {cin >> d[i];d[i + n] = d[i];}int ans = 0;int curSum = 0;int cur = 0;int l = 0;for (int i = 0; i < n * 2; i++) {curSum += d[i];cur += d[i] * (d[i] + 1) / 2;while (curSum > x) {curSum -= d[l];cur -= d[l] * (d[l] + 1) / 2;l++;}int curAns = cur;int cnt = x - curSum;if (l > 0) {curAns += sumup(d[l - 1] - cnt + 1, d[l - 1]);ans = max(ans, curAns);}}cout << ans << endl;return 0;
}// vx公众号关注TechGuide,专业生产offer收割机。
第三题:整数分解
题目描述
给你一个整数N(1 < N < 256),它的一个分解是N = a1 x a2 x a3 x…x ax,其中1 <ai ≤ aj(i≤ j)
对于整数N,请依次输出每一个分解(按照字典序)
例如,给定整数24,输出是
24=2*2*2*3
24=2*2*6
24=2*3*4
24=2*12
24=3*8
24=4*6
24=24
输入描述
输入只有一个整数N
输出描述
按照字典序,依次输出整数N的每一个分解.
样例
输入
11
输出
11=11
思路
递归生成整数N的所有分解,然后按照字典序输出就行了。
代码
Java版本
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();List<List<Integer>> ans = fac(n, 2);for (List<Integer> v : ans) {System.out.print(n + "=");for (int i = 0; i < v.size(); i++) {System.out.print(v.get(i));if (i < v.size() - 1) {System.out.print("*");}}System.out.println();}}private static List<List<Integer>> fac(int n, int p) {List<List<Integer>> result = new ArrayList<>();if (n == 1) {result.add(new ArrayList<>());return result;}for (int i = p; i <= n; i++) {if (n % i == 0) {for (List<Integer> v : fac(n / i, i)) {List<Integer> temp = new ArrayList<>();temp.add(i);temp.addAll(v);result.add(temp);}}}return result;}
}// vx公众号关注TechGuide,专业生产offer收割机。
CPP版本
#include <iostream>
#include <vector>using namespace std;void printResult(int n, vector<int>& vec) {cout << n << "=";for (int i = 0; i < vec.size(); i++) {cout << vec[i];if (i < vec.size() - 1) {cout << "*";}}cout << endl;
}void fac(int n, int p, vector<int>& temp) {if (n == 1) {printResult(n, temp);return;}for (int i = p; i <= n; i++) {if (n % i == 0) {temp.push_back(i);fac(n / i, i, temp);temp.pop_back();}}
}int main() {int n;cin >> n;vector<int> temp;fac(n, 2, temp);return 0;
}// vx公众号关注TechGuide,专业生产offer收割机。
相关文章:
【2024-02-02】华为秋招笔试三道编程题解
恭喜发现宝藏!搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。 作者TechGuide【全网同名】 订阅专栏: 【专享版】2024最新大厂笔试真题解析,错过必后悔的宝藏资源! 第一题:找…...

银行数据仓库体系实践(8)--主数据模型设计
主数据区域中保留了数据仓库的所有基础数据及历史数据,是数据仓库中最重要的数据区域之一,那主数据区域中主要分为近源模型区和整合(主题)模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤…...
vue在main.js中引入三方插件不生效的原因
有的时候需要比较复杂的功能,但是自己实现比较复杂的话,可以引入第三方插件.如果这个第三方插件需要全局都使用的话,可以在main.js中进行引入. 比如router elementplus之类的. import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/…...
chatgpt搭建
chatgpt两步搭建大法 部署docker环境 下载docker curl -fsSL https://get.docker.com -o get-docker.sh安装docker sh get-docker.sh运行docker服务 systemctl start docker查看运行状态 systemctl status docker设置docker开机自启 systemctl enable docker部署chatgpt…...
vue基本理解
1、js闭包,作用?? 闭包是指在一个函数内部,可以访问外部函数的变量,即使外部函数已经执行完毕。闭包的作用有: 保护变量:闭包可以保护函数内部的变量,使其不受外部环境的影响。实现…...

NLP入门系列—Attention 机制
NLP入门系列—Attention 机制 Attention 正在被越来越广泛的得到应用。尤其是 [BERT]火爆了之后。 Attention 到底有什么特别之处?他的原理和本质是什么?Attention都有哪些类型?本文将详细讲解Attention的方方面面。 Attention 的本质是什…...
实习记录——第十天
今天啥也不想说了,ctf里面还有道题目还没做,这里就不写了,把日报奉上,懂得都懂: 2.2日总结: 早上对xx银行的招聘网站做了渗透测试,对招聘网点赞处做重放看是否会多次点赞,对收藏处考…...
Java实现学生信息管理系统:从Excel中提取数据的实用方法
在Java中实现学生信息管理系统并从Excel中读取数据,通常适用于以下场景: 数据迁移和集成:如果你有一个现存的学生信息管理系统,该系统可能使用数据库或其他存储方式,但你想将这些数据迁移到新的系统。Excel文件可能提…...

幻兽帕鲁服务器怎么一键删除游戏存档?(阿里云服务器)
目前通过阿里云一键部署的幻兽帕鲁服务器,已经支持一键清除游戏存档了,已经不需要你再去手动找到游戏存档文件夹,去手动删除了。首先打开阿里云的“计算巢服务器”控制台 进入之后,选择你的幻兽帕鲁服务实例,点击进入详…...

Cambalache in Ubuntu
文章目录 前言apt install flatpak这很ok后记 前言 gtkmm4相比gtkmm3有很多改革, 代码也干净了许多, 但在windows上开发 有ui设计器那自然方便很多, 但glade又不支持gtkmm4, windows上装Cambalache很是困难. 各种问题都找不到答案.于是 我用VMware虚拟机Ubuntu20.xx安装Cambal…...
洛谷P1540 机器翻译
参考代码 #include<iostream> #include<queue> using namespace std; int nums[1010]; int main(){queue<int> q;int M,N;cin>>M>>N;int res0;while(N--){int tmp;cin>>tmp;if(nums[tmp]1)continue;if(q.size()<M){q.push(tmp);res;nu…...

python-自动化篇-运维-可视化-绘图库-matplotlib
文章目录 Matplotlibmatplotlib开发环境搭建绘制基础绘制直线绘制折线设置标签文字和线条粗细绘制一元二次方程的曲线yx^2绘制正弦曲线和余弦曲线散点图绘制柱状图绘制饼状图绘制直方图等高线图绘制三维图 Matplotlib Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib&am…...
【译】在 Mac 上加速 PyTorch 训练
写在前面 为什么突然深度介入大模型领域了 因为最近在评估大模型用于行业应用,通过 OpenCompass 排行榜了解到了很多大模型,像文心一言是自己深度试用过的,趁着这次评估,也体验或者通过其他团队的介绍了解了通义千问、清华智谱、…...

如何在Windows部署GoLand并通过SSH远程连接Linux服务器
文章目录 1. 安装配置GoLand2. 服务器开启SSH服务3. GoLand本地服务器远程连接测试4. 安装cpolar内网穿透远程访问服务器端4.1 服务器端安装cpolar4.2 创建远程连接公网地址 5. 使用固定TCP地址远程开发 本文主要介绍使用GoLand通过SSH远程连接服务器,并结合cpolar内…...

Netty源码三:NioEventLoop创建与run方法
1.入口 会调用到父类SingleThreadEventLoop的构造方法 2.SingleThreadEventLoop 继续调用父类SingleThreadEventExecutor的构造方法 3.SingleThreadEventExecutor 到这里完整的总结一下: 将线程执行器保存到每一个SingleThreadEventExcutor里面去创建了MpscQu…...

【讲座分享】| 复旦大学张奇教授——《自然语言发表论文如何打怪升级?NLP顶会论文发表》
文章目录 1 基础关1.1 基础书籍1.2 提高书籍1.3 课程链接1.4 编程实战 2 阅读关2.1 分层过滤2.2 集团作战,信息获取2.3 论文如何泛读 3 动机 方向关3.1 快速发论文3.2 好的研究 4 写作关4.1 论文写作流程4.2 从读者角度出发4.3 每一部分怎么写4.3.1 Abstract摘要4.3…...

面试八股文(3)
文章目录 1.HashSet如何检查重复2.comparable和Comparator区别3.ConcurrentHashMap和Hashtable区别4.线程和进程5.并发与并行的区别6.为什么使用多线程7.使用多线程可能带来问题8.线程的生命周期和状态9.什么是上下文切换10.线程死锁11.产生死锁四个条件12.如何避免死锁 1.Hash…...

Kubernetes WebHook 入门 -- 入门案例: apiserver 接入 github
博客原文 文章目录 k8s 集群配置介绍Admission WebhookWebHook 入门实践: github 认证接入web 服务器Dockerfile 镜像制作amd64x86_64构造镜像检验镜像 Makefilewebhook 接入 apiserverwebhook.yamlapiserver 挂载 webconfig在 github 中创建认证 token将 token 添加到 kubecon…...

办公软件巨头CCED、WPS面临新考验,新款办公软件异军突起
办公软件巨头CCED、WPS的成长经历 众所周知,CCED和WPS在中国办公软件领域树立了两大知名品牌的地位。然而,它们的成功并非一朝一夕的成就,而是历经了长时间的发展与积淀。 在上世纪80年代末至90年代初,CCED作为中国大陆早期的一款…...

unity角色触摸转向
1、挂载脚本到角色的父物体A上 2 、以屏幕左边的触摸为移动,右边为转向操作 3、加载角色时,将角色的父物体设置为A,须将角色的位置和角度置0 using System; using System.Collections; using System.Collections.Generic; using UnityEngin…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...