当前位置: 首页 > 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;但是可能会因为一些意外状况…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...