青训营-豆包MarsCode技术训练营试题解析二十七

介绍

‌豆包青训营‌是由字节跳动和稀土掘金社区共同发起的技术培训和人才选拔项目。该项目的目标是培养具有职业竞争力的优秀开发工程师,并提供全程免费的课程,不收取任何费用‌。

课程内容和方向

豆包青训营的课程涵盖前端、后端和AI方向。在这个飞速发展的AI时代,学员将与豆包MarsCode团队一起深入探索技术领域,学习和运用AI,提高编程效率‌。此外,课程还包括大数据方向,适合对大数据感兴趣的学员学习‌,

本文提供训练营试题解析供参考

试题1:彩带截取优化问题

问题描述:
小U有一条彩带,每一厘米都被涂上了一种颜色。她需要从彩带上截取一段,使得这段彩带中的颜色种类不超过K种。为了满足任务要求,小U希望截取的彩带段尽可能长。现在你需要帮助小U计算出满足条件的最长彩带段的长度。

例如:彩带的长度为8,每个颜色的编号是 1, 2, 3, 2, 1, 4, 5, 1,小U最多允许3种不同的颜色。此时,最长的满足条件的彩带段是 1, 2, 3, 2, 1,长度为 5。

def solution(N: int, K: int, a: list) -> int:left = 0max_length = 0color_count = {}unique_colors = 0for right in range(N):# 更新当前颜色在窗口中的计数if a[right] in color_count:color_count[a[right]] += 1else:color_count[a[right]] = 1unique_colors += 1# 如果窗口中的颜色种类超过K,收缩窗口while unique_colors > K:# 更新左边界颜色计数color_count[a[left]] -= 1if color_count[a[left]] == 0:unique_colors -= 1del color_count[a[left]]left += 1# 更新最大长度max_length = max(max_length, right - left + 1)return max_lengthif __name__ == '__main__':print(solution(8, 3, [1, 2, 3, 2, 1, 4, 5, 1]) == 5)print(solution(7, 2, [1, 2, 2, 2, 1, 1, 3]) == 6)print(solution(6, 4, [4, 5, 4, 6, 7, 8]) == 5)

试题2:括号补全问题

问题描述:
在这里插入图片描述

def solution(s: str) -> int:# 初始化一个栈来帮助我们匹配括号stack = []# 初始化插入次数insert_count = 0# 遍历字符串中的每一个字符for char in s:if char == '(':# 如果是左括号,直接入栈stack.append(char)else:# 如果是右括号if stack:# 如果栈不为空,弹出栈顶元素(匹配一个左括号)stack.pop()else:# 如果栈为空,说明需要插入一个左括号insert_count += 1# 遍历结束后,栈中剩余的左括号数量就是需要插入的右括号数量insert_count += len(stack)return insert_countif __name__ == '__main__':print(solution("()") == 0)print(solution("(((") == 3)print(solution("()") == 0)print(solution("()))((") == 4)

试题3:按位与三元组问题

问题描述:
在这里插入图片描述

def solution(nums: list) -> int:count = 0n = len(nums)# 遍历所有可能的三元组 (i, j, k)for i in range(n):for j in range(n):for k in range(n):# 检查 nums[i] & nums[j] & nums[k] 是否为0if nums[i] & nums[j] & nums[k] == 0:count += 1return countif __name__ == '__main__':print(solution(nums=[2, 1, 3]) == 12)print(solution(nums=[0, 2, 5]) == 25)print(solution(nums=[1, 2, 4]) == 24)

试题4:数组分割变换后的最大和问题

问题描述:
小F有一个整数数组 arr,他希望将该数组分隔为一些连续的子数组,每个子数组的长度最多为 k。对于每个子数组,所有的值都将变为该子数组中的最大值。小F希望通过这种分隔方式,能够使得最终的数组和最大化。

请你帮助小F找到分隔数组后能够得到的最大和。

def solution(arr: list, k: int) -> int:n = len(arr)dp = [0] * (n + 1)# 从后往前填充 dp 数组for i in range(n - 1, -1, -1):max_val = 0for j in range(1, k + 1):if i + j <= n:# 计算当前子数组的最大值max_val = max(max_val, arr[i + j - 1])# 状态转移方程dp[i] = max(dp[i], max_val * j + dp[i + j])return dp[0]if __name__ == '__main__':print(solution(arr=[1, 3, 7, 9, 5, 5, 8], k=3) == 56)print(solution(arr=[1, 4, 1, 5, 6], k=2) == 24)print(solution(arr=[2, 3, 1, 2, 4], k=2) == 16)

试题5:数组坡的最大宽度问题

问题描述:
小U有一个整数数组 A,他想知道其中的坡的最大宽度。一个坡是指满足条件的元组 (i, j),其中 i < j 且 A[i] <= A[j]。这样的坡的宽度定义为 j - i。请你帮小U找出数组 A 中的坡的最大宽度。如果不存在符合条件的坡,则返回 0。

def solution(A: list) -> int:# 初始化最大宽度为0max_width = 0# 遍历数组中的每一个元素for i in range(len(A)):for j in range(i + 1, len(A)):# 检查是否满足坡的条件 A[i] <= A[j]if A[i] <= A[j]:# 计算当前坡的宽度current_width = j - i# 更新最大宽度if current_width > max_width:max_width = current_widthreturn max_widthif __name__ == '__main__':print(solution(A=[6, 0, 8, 2, 1, 5]) == 4)print(solution(A=[9, 7, 1, 0, 3, 9, 2, 9, 4, 1]) == 7)print(solution(A=[3, 3, 3, 3, 3]) == 4)

试题6:数组最小化分数问题

问题描述:
小F有一个整数数组 nums,以及一个整数 k。他可以在数组中的任意一个索引 i(0 <= i < nums.length)执行一次操作,将 nums[i] 改为 nums[i] + x,其中 x 是一个在范围 [-k, k] 内的任意整数。每个索引最多只能应用一次该操作。

nums 的分数定义为数组中最大值与最小值的差。你的任务是找到在对 nums 中的每个索引最多应用一次上述操作后,数组能够得到的最小分数。

例如:当 nums = [1] 且 k = 0 时,最大值和最小值相同,分数为 0。

def solution(nums: list, k: int) -> int:# 找到数组中的最大值和最小值max_val = max(nums)min_val = min(nums)# 计算调整后的最大值和最小值adjusted_max = max_val - kadjusted_min = min_val + k# 计算调整后的分数# 如果调整后的最大值小于调整后的最小值,说明可以通过调整使得最大值和最小值相同if adjusted_max < adjusted_min:return 0else:return adjusted_max - adjusted_minif __name__ == '__main__':print(solution([1], 0) == 0)print(solution([3, 1, 4], 1) == 1)print(solution([7, 2, 5, 10], 2) == 4)print(solution([6, 4, 8], 3) == 0)

试题7:最大化数组和的问题

问题描述:
小F得到了一个长度为 N 的数组 A,其中每个元素都是偶数,且数组编号从 0 到 N-1。请注意,数组 A 中的整数可以是负数。

你需要执行 N 个任务,编号从 0 到 N-1。在任务 i 中,你可以选择将 A[i] 乘以 2 或将 A[i] 除以 2。

你的任务是通过执行这些操作后,使数组 A 的元素和达到最大值,并返回这个最大和。

def solution(N: int, A: list) -> int:# 初始和current_sum = sum(A)# 遍历数组for i in range(N):# 尝试乘以2new_sum_multiply = current_sum - A[i] + A[i] * 2# 尝试除以2(注意:只有当A[i]不为0时才进行除法操作)if A[i] != 0:new_sum_divide = current_sum - A[i] + A[i] // 2else:new_sum_divide = current_sum# 选择使和最大的操作current_sum = max(current_sum, new_sum_multiply, new_sum_divide)return current_sumif __name__ == '__main__':print(solution(N = 3, A = [-4, 2, 4]) == 10)print(solution(N = 2, A = [-8, 4]) == 4)print(solution(N = 4, A = [-6, 6, 2, -2]) == 12)

试题8:最小成本生成二进制字符串

问题描述:
在这里插入图片描述

def solution(N: int, S: str) -> int:# 初始化总成本total_cost = 0# 初始化 T 的最后一个字符为空last_char = None# 遍历字符串 Sfor char in S:if last_char is None or char == last_char:# 如果 T 为空或者当前字符与 T 的最后一个字符相同,直接推送last_char = charelse:# 否则,进行反转操作total_cost += 1# 反转后,T 的最后一个字符变为当前字符last_char = charreturn total_costif __name__ == '__main__':print(solution(N = 2, S = "10") == 1)print(solution(N = 3, S = "111") == 0)print(solution(N = 4, S = "0001") == 1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能学习用的电脑安装cuda、torch、conda等软件,版本的选择以及多版本切换

接触人工智能的学习三个月了&#xff0c;每天与各种安装包作斗争&#xff0c;缺少依赖包、版本高了、版本低了、不兼容了、系统做一半从头再来了。。。这些都是常态。三个月把单位几台电脑折腾了不下几十次安装&#xff0c;是时候总结一下踩过的坑和积累的经验了。 以一个典型的…

华为关键词覆盖应用市场ASO优化覆盖技巧

在我国的消费者群体当中&#xff0c;华为的品牌形象较高&#xff0c;且产品质量过硬&#xff0c;因此用户基数也大。与此同时&#xff0c;随着影响力的增大&#xff0c;华为不断向外扩张&#xff0c;也逐渐成为了海外市场的香饽饽。作为开发者和运营者&#xff0c;我们要认识到…

Vue+Vite 组件开发的环境配置(超级简单)

vite是什么 Vite 是一个现代化的前端构建工具和开发服务器&#xff0c;它特别适用于构建大型的单页面应用&#xff08;SPA&#xff09;。Vite 旨在提供极快的冷启动速度&#xff0c;并且能够即时地&#xff08;几乎实时地&#xff09;更新模块&#xff0c;这得益于其利用原生 …

从仪表盘探索 MongoDB 关键指标

这是 MongoDB 监控系列文章的第七篇&#xff0c;前面几篇文章的链接如下&#xff1a; MongoDB 监控&#xff08;一&#xff09;MongoDB 监控&#xff08;二&#xff09;MongoDB 监控&#xff08;三&#xff09;MongoDB 监控&#xff08;四&#xff09;MongoDB 监控&#xff08…

mac安装php和xdebug调试

要在Mac上安装PHP 7.4&#xff0c;你可以通过几种方式来完成&#xff0c;但鉴于PHP7.4官方已不再维护&#xff0c;并且Homebrew默认仓库中不再提供此版本&#xff0c;我们需要从第三方仓库或直接从源代码进行安装。本文以brew方式安装&#xff0c;如果安装的是8.0以上&#xff…

UIlicious - 自动化端到端测试

在现代软件开发中&#xff0c;测试自动化已然成为产品交付质量的基石。而端到端测试&#xff08;E2E&#xff09;&#xff0c;作为验证整个应用流畅运行的关键&#xff0c;常常是测试工作中最具挑战性的一环。这时&#xff0c;一款简单高效的自动化测试工具——UIlicious&#…

新一代零样本无训练目标检测

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月2日21点02分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅h…

Python_Flask01

所有人都不许学Java了&#xff0c;都来学Python&#xff01; 如果不来学的话请网爆我的老师---蔡老师 Flask的前世姻缘 我不知道&#xff0c;没啥用&#xff0c;要学好这个框架&#xff0c;其实多读书&#xff0c;多看报就行了&#xff0c;真心想了解的话&#xff01; Welcom…

微信小程序版小米商城的搭建流程详解!

很多初学微信小程序语法的同学&#xff0c;可能不知道如何布局和搭建一个项目&#xff0c;下面我将讲解初学者如何搭建项目和注意事项。 目录 一、 app.json的配置 二、引入vant 三、主页banner携带参数跳转 四、点击商品项跳转详情页 一、 app.json的配置 {"pages&q…

Neo4j启动时指定JDK版本

项目使用jdk1.8&#xff0c;同时需要安装neo4j5.15版本&#xff0c;使用jdk17. 1.mac或者liunx&#xff0c;找到neo4j目录bin的下neo4j文件 设置JAVA_HOME: 2.windows,找到bin下面的neo4j.bat文件 set "JAVA_HOME{JDK文件目录}" 重启后生效。

AI大模型驱动数据分析:利用自然语言实现数据查询与可视化(1)

在当今AI驱动的时代&#xff0c;数据分析已成为各行各业不可或缺的能力。然而&#xff0c;传统的数据分析流程通常需要掌握SQL、数据处理和可视化等多项专业技能&#xff0c;这对非技术背景的业务人员来说是一个不小的挑战。 想象一下&#xff0c;当数据中心的负责人打开手机时…

汽车总线协议分析-FlexRay总线

随着汽车智能化发展&#xff0c;汽车增加安全性和舒适体验的功能增多&#xff0c;用于实现这些功能的传感器、ECU的数量也在持续上升&#xff0c;严重阻碍了线控技术的发展。常用的CAN、LIN等总线由于缺少同步性、确定性和容错性不能满足汽车线控系统(X-by-Wire)的要求。因此&a…

第二篇:k8s工作流程

我们来看通过deployment部署pod的常规流程&#xff1a; kubectl向apiserver发送部署请求&#xff08;例如使用 kubectl create -f deployment.yml&#xff09;apiserver将 Deployment 持久化到etcd&#xff1b;etcd与apiserver进行一次http通信。controller manager通过watch a…

SPC三种判定准则的算法

1.连续6个点递增或递减 //传入数据列表 //返回连续X个及以上递增或递减的数组下标int n = array.Length; int X = X_in; List<int> regions_start = new List<int>(); List<int> regions_end = new List<int>();if(Open){for (int i = 0; i < n - (…

工业—使用Flink处理Kafka中的数据_ProduceRecord1

1 、 使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入Redis 中, key 值为

python爬虫01

前言 之前的学习不是很努力就间断更新了&#xff0c;现在所有的内容是在具有python基础和web基础上继续更新的。接下来是爬虫和Flask框架共同更新&#xff0c;一起加油吧。 接v&#xff1a;13053025350&#xff08;毕设&#xff0c;小程序&#xff09; 看不懂python基础的可以…

第四篇:k8s 理解Service工作原理

什么是service&#xff1f; Service是将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。 简单来说K8s提供了service对象来访问pod。我们在《k8s网络模型与集群通信》中也说过k8s集群中的每一个Pod&#xff08;最小调度单位&#xff09;都有自己的IP地址&#xff0c;都…

hhdb数据库介绍(10-43)

安全 密码安全管理 密码安全管理为用户提供了对计算节点数据库用户与存储节点的连接用户、备份用户的密码有效期监控提醒。到期后自动提示用户修改密码以提升系统的安全性。 数据库用户密码 &#xff08;一&#xff09;密码修改 用户可以在“安全->密码安全管理->数据…

基于DFA算法实现敏感词过滤

1、什么是DFA&#xff1f; DFA&#xff08;Deterministic Finite Automaton&#xff09;&#xff0c;即确定有穷自动机。其特征为&#xff1a;有一个有限状 态集合和一些从一个状态通向另一个状态的边&#xff0c;每条边上标记有一个符号&#xff0c;其中一个状态是 初态&#…

隐私安全大考,Facebook 如何应对?

随着数字时代的到来和全球互联网用户的快速增长&#xff0c;隐私安全问题已上升为网络世界的重要议题。社交媒体巨头Facebook因其庞大的用户群体和大量的数据处理活动&#xff0c;成为隐私问题的聚焦点。面对隐私安全的大考&#xff0c;Facebook采取了一系列策略来应对这些挑战…