当前位置: 首页 > news >正文

大厂笔试汇总

大厂笔试

  • 华为笔试汇总
      • 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.交易…...

【数据结构】快排的详细讲解

目录&#xff1a; 介绍 一&#xff0c;递归快排确定基准值 二&#xff0c;递归遍历 三&#xff0c;非递归的快排 四&#xff0c;快排的效率 介绍 快排是排序算法中效率是比较高的&#xff0c;快排的基本思想是运用二分思想&#xff0c;与二叉树的前序遍历类似&#xff0c;…...

蓝牙资讯|三星推迟发布智能戒指Galaxy Ring,智能穿戴小型化是大趋势

根据外媒 The Elec 报道&#xff0c;Galaxy Ring这款戒指主要面向健康和 XR 头显市场&#xff0c;该智能戒指可能被延期至 2024 年第三季度后发布。 外媒声称三星 Galaxy Ring 的上市周期&#xff0c;主要取决医疗认证的相关审批时间&#xff0c;三星计划将在 2024 年第三季度…...

移动端tree树

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

SpringTask ----定时任务框架 ----苍穹外卖day10

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

Fuzz测试:发现软件隐患和漏洞的秘密武器

0x01 什么是模糊测试 模糊测试&#xff08;Fuzz Testing&#xff09;是一种广泛用于软件安全和质量测试的自动化测试方法。它的基本思想是向输入参数或数据中注入随机、不规则或异常的数据&#xff0c;以检测目标程序或系统在处理不合法、不正常或边缘情况下的行为。模糊测试通…...

无为WiFi的一批服务器

我们在多个地区拥有高速服务器&#xff0c;保证网速给力&#xff0c;刷片无压力 嘿嘿 <?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的自动装配原理&#xff1a; Spring Boot的自动装配原理是基于约定大于配置的原则&#xff0c;它通过扫描类路径下的各种文件以及类的注解信息来自动配置应用程序的各种组件和功能。Spring Boot会根据约定的规则自动配置相应的Bean&#xff0c;这些Bean都是单例的&…...

【数据库开发】DQL操作和多表设计

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

用PyTorch轻松实现二分类:逻辑回归入门

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…...

[nltk_data] Error loading stopwords: <urlopen error [WinError 10054]

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

基于Spring Boot的网上租贸系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

通过IP地址管理提升企业网络安全防御

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

termius mac版无需登录注册直接永久使用

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

TPU编程竞赛|Stable Diffusion大模型巅峰对决,第五届全球校园人工智能算法精英赛正式启动!

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

微信小程序 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 开始

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

100天精通Python(可视化篇)——第103天:Pyecharts绘制多种炫酷水球图参数说明+代码实战

文章目录 专栏导读一、水球图介绍1. 水球图是什么?2. 水球图的应用场景二、水球图类配置选项1. 导包2. Liquid类3. add函数三、水球图实战1. 基础水球图2. 矩形水球图3. 圆棱角矩形水球图4. 三角形水球图5. 菱形水球图6. 箭头型水球图7. 修改数据精度8. 设置无边框9. 多个并排…...

好用的文件备份软件推荐!

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

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...