大厂笔试汇总
大厂笔试
- 华为笔试汇总
- 1.交易系统的降级策略(二分法)
- 2.获取最多食物(树形DP)
- 3.小王的密码本(哈希)
- 4.每日股票价格(单调栈)
- 5.中庸行者(回溯)
- 输入描述
- 输出描述
- 6.数字序列比大小(贪心)
- 输入描述
- 输出描述
- 7、快递中转站
- 8、互通设备集
- 字节跳动
- 中兴笔试
华为笔试汇总
1.交易系统的降级策略(二分法)
题目描述:有一个核心交易系统接口被N个上游系统调用,每个上游系统的调用量R=[R1,R2…,RN].由于核心交易系统集群故障,需要暂时系统降级限制调用,核心交易系统能接受的最大调用量为cnt。设置降级规则如下;如果sum(R1.R2…RN)小于等于cnt,则全部可以正常调用,返回-1;如果sum(R1.R2…RN)大于cnt,设置一个阈值limit,如果某个上游系统发起的调用量超过limit,就将该上游系统的调用量限制为limit,其余未达到limit的系统可以正常发起调用。求出这个最大的limit(limit可以为0)此题目对效率有要求,请选择高效的方式。
输入描述
第一行:每个上游系统的调用量(整型数组) 第二行:核心交易系统的最大调用量 0<R.length<=10^5,0<R[i]<105,0<cnt <= 10^9
输出描述
调用量的阈值Iimit
测试用例
样例1: 输入: 1 4 2 5 5 1 6 13 输出: 2 解释:因为1+4+2+5+5+1+6>13;将limit设置为2,则1+2+2+2+2+1+2=12<13。所以limit为2样例2: 输入: 1 7 8 8 1 0 2 4 9 7 输出: 0 解释:因为即使limit设置为1,1+1+1+1+1+1+1+1=8>7也不满足,所以limit只能为0
解题思路:二分法,在[0, end]左闭右闭区间内不断搜索符合条件的limit,本题需要搜索到符合条件的最大右边界,即找到ret恰好小于cnt时对应的end边界。这就需要在区间内寻找符合条件的右边界相关算法,在后面已经引入。
#include <iostream>
#include <vector>
using namespace std;int getSum(vector<int>& nums, int limit)
{int sum = 0;for(int num : nums){if(num < limit) sum += num;else sum += limit;}return sum;
}int getLimit(vector<int>& nums, int cnt, int begin, int end)
{// 二分法实现 寻找符合条件的右边界(因为要找到ret恰好小于cnt时对应的边界)int mid = 0;while(begin < end){mid = begin + (end - begin) / 2;int ret = getSum(nums, mid);// 需要缩小左侧边界if(ret < cnt){begin = mid + 1;}// 需要缩小右侧边界else if(ret > cnt){end = mid - 1;}else{// 别返回,收缩右侧边界begin = mid + 1;}}// 返回ret恰好小于cnt时对应的mid,即我们需要的limitreturn end;
}int main() {// vector<int> nums{1,7,8,8,1,0,2,4,9};// int cnt = 7;vector<int> nums{2,4,2,5,5,2,6};int cnt = 1;int sum = 0;int begin = 0; // 左边界直接从0开始,也避免了选择左侧边界带来的麻烦int end = INT_MIN; // 记录所有元素中的最大元素 最终形成左闭右闭区间for(int i = 0; i < nums.size(); ++i){end = max(end, nums[i]);sum += nums[i];} if(sum <= cnt) cout << -1 << endl;int limit = getLimit(nums, cnt, begin, end);cout << limit << endl;return 0;
}
在排序数组内搜索左右边界
思路:labuladong
① 搜索一个元素时,搜索区间两端闭;while条件带等号,if相等就返回;mid必须加减一,因为区间两端闭;while结束就凉了,凄凄惨惨返-1。
② 搜索左右边界时,搜索区间要阐明;左闭右开最常见,其余逻辑便自明;while要用小于号,这样才能不漏掉;if相等别返回,利用mid锁边界;mid加一或减一?要看区间开或闭;while结束不算完,因为你还没返回;索引可能出边界,if检查保平安。
将right初始化为nums.size() - 1, while的终止条件为left == right + 1,也就是left > right时循环结束,那么while的循环条件就应该为 <= 。这样就将搜索区间统一成左闭右闭区间。
寻找左侧边界-左闭右闭区间
// 寻找左侧边界-左闭右闭区间 int left = 0, right = nums.size() - 1; // 搜索区间为[left, right] while(left <= right) {int mid = left + (right - left) / 2;if(target > nums[mid]){// 搜索区间变为[mid + 1, right]left = mid + 1;}else if(target < nums[mid]){// 搜索区间变为[left, mid - 1]right = mid - 1;}else if(target == nums[mid]){// 别返回,收缩左侧边界right = mid - 1;} } // 循环结束还没有返回值,还需要判断索引是否越界(这里left == right + 1会结束循环) // 检查出界情况 || (不出界判断是否是target) if(left >= nums.size() || nums[left] != target) {return -1; } return left;
寻找右侧边界-左闭右闭区间
// 寻找右侧边界-左闭右闭区间 int left = 0, right = nums.size() - 1; while(left <= right) {int mid = left + (right - left) / 2;if(target > nums[mid]){// 搜索区间变为[mid + 1, right]left = mid + 1;}else if(target < nums[mid]){// 搜索区间变为[left, mid - 1]right = mid - 1;}else if(target == nums[mid]){// 别返回,收缩右侧边界left = mid + 1;} }// 循环结束,判断出界情况或者是否是target if(right < 0 || nums[right] != target) {return -1; } return right;
2.获取最多食物(树形DP)
题目描述:
主办方设计了一个获取食物的游戏。游戏的地图由N个方格组成,每个方格上至多2个传送门,通过传送门可将参与者传送至指定的其它方格。
同时,每个方格上标注了三个数字:
(1) 第一个数字id: 代表方格的编号,从0到N-1,每个方格各不相同
(2) 第二个数字parent-id: 代表从编号为parent-id的方格可以通过传送门传送到当前方格(-1则表示没有任何方格可以通过传送门传送到此方格,这样的方格在地图中有且仅有一个);
(3) 第三个数字value: 取值在[-100,100]的整数值,正整数代表参与者得到相对取值单位的食物,负整数代表失去相应数值单位的食物(参与者可能存在临时持有食物为负数的情况),0则代表无变化。
此外,地图设计时保证了参与者不可能到达相同的方格两次,并且至少有一个方格的value是正整数。 游戏开始后,参与者任意选择一个方格作为出发点,当遇到下列情况之一退出游戏: (1)参与者当前所处的方格无传送门: (2) 参与者在任意方格上主动宣布退出游戏 请计算参与者退出游戏后,最多可以获得多少单位的食物 解答要求 时间限制: C/C++ 1300ms.其他语言:2600ms内存限制: C/C++256MB其他语言:512MB 第一行:方块个数N (N<10000)
测试用例:
输入描述:
第一行:方块个数N
其余行,共N行,每行3个数字
输出描述:
最多可以获得多少单位的食物
样例1: 输入: 7 0 1 8 1 -1 -2 2 1 9 4 0 -2 5 4 3 3 0 -3 6 2 -3 输出: 9 参与者从方格0出发,通过传送门到达方格4,再通过传送门到达方格5。一共获得8+(-2) +3=9个单位食物,得到食物最多: 或者参与者在游戏开始时处于方格2,直接主动宣布退出游戏,也可以获得9个单位食物。样例2: 输入: 3 0 -1 3 1 0 1 2 0 2 输出 5 参与者从方格0出发,通过传送门到达方格2,一共可以获得3+2=5个单位食物,此时得到食物最多
#include <iostream>
#include <vector>
using namespace std;int dfs(vector<vector<int>>& nodes, int n
相关文章:

大厂笔试汇总
大厂笔试 华为笔试汇总1.交易系统的降级策略(二分法)2.获取最多食物(树形DP)3.小王的密码本(哈希)4.每日股票价格(单调栈)5.中庸行者(回溯)输入描述输出描述6.数字序列比大小(贪心)输入描述输出描述7、快递中转站8、互通设备集字节跳动中兴笔试华为笔试汇总 1.交易…...

【数据结构】快排的详细讲解
目录: 介绍 一,递归快排确定基准值 二,递归遍历 三,非递归的快排 四,快排的效率 介绍 快排是排序算法中效率是比较高的,快排的基本思想是运用二分思想,与二叉树的前序遍历类似,…...

蓝牙资讯|三星推迟发布智能戒指Galaxy Ring,智能穿戴小型化是大趋势
根据外媒 The Elec 报道,Galaxy Ring这款戒指主要面向健康和 XR 头显市场,该智能戒指可能被延期至 2024 年第三季度后发布。 外媒声称三星 Galaxy Ring 的上市周期,主要取决医疗认证的相关审批时间,三星计划将在 2024 年第三季度…...

移动端tree树
注意: 这是uniapp的写法,vue想用的话需要改造一下,里边的view和text,vue不能用,改成div,span即可。 样式rpx也要改成px tree树组件(QQ群:旧群没了,新群:801142650) - …...

SpringTask ----定时任务框架 ----苍穹外卖day10
目录 SpringTask 需求分析 快速入门 使用步骤 编辑业务开发 SpringTask 定时任务场景特化的框架 需求分析 快速入门 使用cron表达式来使用该框架 使用步骤 添加注解 自定义定时任务类 重点在于以下cron表达式的书写,精确表达触发的间隔 业务开发 主task方法 time使用(-…...

Fuzz测试:发现软件隐患和漏洞的秘密武器
0x01 什么是模糊测试 模糊测试(Fuzz Testing)是一种广泛用于软件安全和质量测试的自动化测试方法。它的基本思想是向输入参数或数据中注入随机、不规则或异常的数据,以检测目标程序或系统在处理不合法、不正常或边缘情况下的行为。模糊测试通…...

无为WiFi的一批服务器
我们在多个地区拥有高速服务器,保证网速给力,刷片无压力 嘿嘿 <?phpinclude("./includes/common.php"); $actisset($_GET[act])?daddslashes($_GET[act]):null; $urldaddslashes($_GET[url]); $authcodedaddslashes($_GET[authcode]);he…...

SpringBoot3.0——踩坑
SpringBoot3.0后有一些改动 JDK要17以上lombok <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version> </dependency>servlet <dependency><groupId>ja…...

Springboot的自动装配原理和文件上传FastDFS
Spring Boot的自动装配原理: Spring Boot的自动装配原理是基于约定大于配置的原则,它通过扫描类路径下的各种文件以及类的注解信息来自动配置应用程序的各种组件和功能。Spring Boot会根据约定的规则自动配置相应的Bean,这些Bean都是单例的&…...

【数据库开发】DQL操作和多表设计
数据库开发 一、数据库操作-DQL 1.概述 用来查询数据库表中的记录,查询操作分为两部分,单表操作和多表操作,针对于查询而言(相较于增删改更加的灵活)基于目标分析条件转换为SQL语句 2.语法 SELECT 字段列表 FROM表…...

用PyTorch轻松实现二分类:逻辑回归入门
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

[nltk_data] Error loading stopwords: <urlopen error [WinError 10054]
报错提示: >>> import nltk >>> nltk.download(stopwords) 按照提示执行后 [nltk_data] Error loading stopwords: <urlopen error [WinError 10054] 找到路径C:\\Users\\EDY\\nltk_data,如果没有nltk_data文件夹,在…...

基于Spring Boot的网上租贸系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

通过IP地址管理提升企业网络安全防御
在今天的数字时代,企业面临着越来越多的网络安全威胁。这些威胁可能来自各种来源,包括恶意软件、网络攻击和数据泄露。为了提高网络安全防御,企业需要采取一系列措施,其中IP地址管理是一个重要的方面 1. IP地址的基础知识 首先&a…...

termius mac版无需登录注册直接永久使用
1. 下载地址:termius下载 2. 解压安装 3. 当出现 “termius”已损坏,无法打开 则输入以下命令即可:sudo xattr -r -d com.apple.quarantine /Applications/Termius.app 最后去 系统设置-> 隐私与安全性-> 仍要打开 4. 删除app-update.yml文件&…...

TPU编程竞赛|Stable Diffusion大模型巅峰对决,第五届全球校园人工智能算法精英赛正式启动!
目录 赛题介绍 赛题背景 赛题任务 赛程安排 评分机制 奖项设置 近日,2023第五届全球校园人工智能算法精英赛正式开启报名。作为赛题合作方,算丰承办了“算法专项赛”赛道,提供赛题「面向Stable Diffusion的图像提示语优化」,…...

微信小程序 rpx 转 px
前言 略 rpx 转 px let query wx.createSelectorQuery(); query.selectViewport().boundingClientRect(function(res){let rpx2Px 1 * (res.width/750);console.log("1rpx " rpx2Px "px"); }); query.exec();参考 https://blog.csdn.net/qq_39702…...

机器学习之旅-从Python 开始
导读你想知道如何开始机器学习吗?在这篇文章中,我将简要概括一下使用 Python 来开始机器学习的一些步骤。Python 是一门流行的开源程序设计语言,也是在人工智能及其它相关科学领域中最常用的语言之一。机器学习简称 ML,是人工智能…...

100天精通Python(可视化篇)——第103天:Pyecharts绘制多种炫酷水球图参数说明+代码实战
文章目录 专栏导读一、水球图介绍1. 水球图是什么?2. 水球图的应用场景二、水球图类配置选项1. 导包2. Liquid类3. add函数三、水球图实战1. 基础水球图2. 矩形水球图3. 圆棱角矩形水球图4. 三角形水球图5. 菱形水球图6. 箭头型水球图7. 修改数据精度8. 设置无边框9. 多个并排…...

好用的文件备份软件推荐!
为什么需要文件备份软件? 在我们使用计算机的日常工作生活中,可能会遇到各种不同类型的文件,例如文档、Word文档、Excel表格、PPT演示文稿、图片等,这些数据中可能有些对我们来说很重要,但是可能会因为一些意外状况…...

1130 - Host ‘192.168.10.10‘ is not allowed to connect to this MysOL server
mysql 远程登录报错误信息:1130 - Host 124.114.155.70 is not allowed to connect to this MysOL server //需要在mysql 数据库目录下修改 use mysql; //更改用户的登录主机为所有主机,%代表所有主机 update user set host% where userroot; //刷新权…...

如何实现 Es 全文检索、高亮文本略缩处理
如何实现 Es 全文检索、高亮文本略缩处理 前言技术选型JAVA 常用语法说明全文检索开发高亮开发Es Map 转对象使用核心代码 Trans 接口(支持父类属性的复杂映射)Trans 接口的不足真实项目落地效果 前言 最近手上在做 Es 全文检索的需求,类似于…...

Netty(四)NIO-优化与源码
Netty优化与源码 1. 优化 1.1 扩展序列化算法 序列化,反序列化主要用于消息正文的转换。 序列化:将java对象转为要传输对象(byte[]或json,最终都是byte[]) 反序列化:将正文还原成java对象。 //java自带的序列化 // 反序列化 b…...

我的创业之路:我为什么选择 Angular 作为前端的开发框架?
我是一名后端开发人员,在上班时我的主要精力集中在搜索和推荐系统的开发和设计工作上,我比较熟悉的语言包括java、golang和python。对于前端技术中typescript、dom、webpack等流行的框架和工具也懂一些。目前,已成为一名自由职业者࿰…...

阿里云服务器ECS是什么?云服务器详细介绍
阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云服务器网分享阿…...

深入了解快速排序:原理、性能分析与 Java 实现
快速排序(Quick Sort)是一种经典的、高效的排序算法,被广泛应用于计算机科学和软件开发领域。本文将深入探讨快速排序的工作原理、步骤以及其在不同情况下的性能表现。 什么是快速排序? 快速排序是一种基于分治策略的排序算法&am…...

[晕事]今天做了件晕事22;寻找99-sysctl.conf; systemd
这个文件,使用ls命令看不出来是一个链接。 然后满世界的找这个文件怎么来的,后来发现是systemd里的一个文件。 从systemd的源文件里也没找到相关的文件信息。 最后把这个rpm安装包下载下来,才找到这个文件原来是一个链接 #ll /etc/sysctl.d/9…...

2578. 最小和分割
给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所有数字出现的次数之和等于 num 中所有数字出现的次数。num1…...

Mybatis mapper报错:Class not found: org.jboss.vfs.VFS
报错 Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Class not found: org.jboss.vfs.VFS JBoss 6 VFS API is not available in this environment. Class not found: org.jboss.vfs.VirtualFile VFS implementation org.apache.iba…...

ARM作业1
三盏灯流水 代码 .text .global _start _start: 1.设置GPIOE寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28 LDR R0,0X50000A28 LDR R1,[R0] 从r0为起始地址的4字节数据取出放在R1 ORR R1,R1,#(0x3<<4) 第4位设置为1 STR R1,[R0] 写回2.设置PE10管…...