青训营-豆包MarsCode技术训练营试题解析九

介绍

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

课程内容和方向

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

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

试题1:最少字符串操作次数

问题描述:
小U得到一个只包含小写字母的字符串 S。她可以执行如下操作:每次选择字符串中两个相同的字符删除,然后在字符串末尾添加一个任意的小写字母。小U想知道,最少需要多少次操作才能使得字符串中的所有字母都不相同?

def solution(S: str) -> int:# 统计每个字符出现的次数from collections import Counterchar_count = Counter(S)# 初始化操作次数operations = 0# 遍历字符计数,处理每个字符的出现次数for count in char_count.values():# 如果字符出现次数大于1,需要进行操作if count > 1:# 计算需要进行的操作次数# 每次操作可以减少一对相同的字符# 例如,如果有3个'a',需要2次操作(3 - 1)operations += (count // 2)return operationsif __name__ == '__main__':print(solution(S = "abab") == 2)  # Trueprint(solution(S = "aaaa") == 2)  # Trueprint(solution(S = "abcabc") == 3)  # True

试题2:石子移动问题

问题描述:
小S正在玩一个关于石子的游戏,给定了一些石子,它们位于一维数轴的不同位置,位置用数组 stones 表示。如果某个石子处于最小或最大的一个位置,我们称其为端点石子。

在每个回合,小S可以将一颗端点石子移动到一个未占用的位置,使其不再是端点石子。游戏继续,直到石子的位置变得连续,无法再进行任何移动操作。

你需要帮助小S找到可以移动的最大次数。

import java.util.Arrays;public class Main {public static int solution(int[] stones) {if (stones.length == 1) {return 0;}Arrays.sort(stones);int n = stones.length;// 计算最大移动次数int maxMoves = Math.max(stones[n - 1] - stones[1], stones[n - 2] - stones[0]) - (n - 2);// 计算最小移动次数,使用滑动窗口int minMoves = Integer.MAX_VALUE;int j = 0;for (int i = 0; i < n; i++) {// 确保窗口内最多有 n 个石子while (j < n && stones[j] - stones[i] + 1 <= n) {j++;}// 如果窗口内有 n - 1 个石子,且空位为 1,则需要特殊处理int alreadyInPlace = j - i;if (alreadyInPlace == n - 1 && stones[j - 1] - stones[i] + 1 == n - 1) {minMoves = Math.min(minMoves, 2);} else {minMoves = Math.min(minMoves, n - alreadyInPlace);}}return maxMoves;}public static void main(String[] args) {System.out.println(solution(new int[]{7, 4, 9})); // 输出: 2System.out.println(solution(new int[]{6, 5, 4, 3, 10})); // 输出: 3System.out.println(solution(new int[]{1, 2, 3, 4, 5})); // 输出: 0}
}

试题3:小R的随机播放顺序

问题描述:
小R有一个特殊的随机播放规则。他首先播放歌单中的第一首歌,播放后将其从歌单中移除。如果歌单中还有歌曲,则会将当前第一首歌移到最后一首。这个过程会一直重复,直到歌单中没有任何歌曲。

例如,给定歌单 [5, 3, 2, 1, 4],真实的播放顺序是 [5, 2, 4, 1, 3]。

保证歌曲中的id两两不同。

from collections import dequedef solution(n: int, a: list) -> list:# 创建一个结果列表来存储最终的播放顺序result = []# 使用 deque 来模拟播放过程queue = deque(a)# 遍历队列,按照题目描述的规则进行操作while queue:# 从队列头部取出一个元素,并将其加入结果列表result.append(queue.popleft())# 如果队列中还有元素,则将当前队列头部的元素移到队列尾部if queue:queue.append(queue.popleft())return resultif __name__ == '__main__':print(solution(n = 5, a = [5, 3, 2, 1, 4]) == [5, 2, 4, 1, 3])print(solution(n = 4, a = [4, 1, 3, 2]) == [4, 3, 1, 2])print(solution(n = 6, a = [1, 2, 3, 4, 5, 6]) == [1, 3, 5, 2, 6, 4])

试题4:DNA序列编辑距离

问题描述:
小R正在研究DNA序列,他需要一个函数来计算将一个受损DNA序列(dna1)转换成一个未受损序列(dna2)所需的最少编辑步骤。编辑步骤包括:增加一个碱基、删除一个碱基或替换一个碱基。

def solution(dna1, dna2):m, n = len(dna1), len(dna2)# 创建一个 (m+1) x (n+1) 的二维数组 dpdp = [[0] * (n + 1) for _ in range(m + 1)]# 初始化 dp 数组的第一行和第一列for i in range(m + 1):dp[i][0] = ifor j in range(n + 1):dp[0][j] = j# 填充 dp 数组for i in range(1, m + 1):for j in range(1, n + 1):if dna1[i - 1] == dna2[j - 1]:dp[i][j] = dp[i - 1][j - 1]else:dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1# 返回 dp[m][n],即最少编辑步骤return dp[m][n]if __name__ == "__main__":# 你可以添加更多测试用例print(solution("AGCTTAGC", "AGCTAGCT") == 2)print(solution("AGCCGAGC", "GCTAGCT") == 4)

试题5:小U的数字插入问题

问题描述:
小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数,而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置,以形成一个最大的可能数字。

你需要帮助小U找到这个插入位置,输出插入后的最大结果。

def solution(a: int, b: int) -> int:# 将数字转换为字符串str_a = str(a)str_b = str(b)# 初始化最大值max_num = 0# 遍历插入位置for i in range(len(str_a) + 1):# 尝试将 str_b 插入到 str_a 的第 i 个位置new_num_str = str_a[:i] + str_b + str_a[i:]# 将新字符串转换为整数new_num = int(new_num_str)# 更新最大值if new_num > max_num:max_num = new_numreturn max_numif __name__ == '__main__':print(solution(76543, 4) == 765443)print(solution(1, 0) == 10)print(solution(44, 5) == 544)print(solution(666, 6) == 6666)

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

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

相关文章

前端的面试题

1.常用的块与行属性内标签有哪些&#xff1f;有什么特征&#xff1f; 块标签&#xff1a;div、h1~h6、ul、li、table、p、br、form。 特征&#xff1a;独占一行&#xff0c;换行显示&#xff0c;可以设置宽高&#xff0c;可以嵌套块和行 行标签&#xff1a;span、a、img、text…

`asyncio.wait` 和 `asyncio.gather` 的区别

asyncio.wait 和 asyncio.gather 的区别 1. asyncio.wait2. asyncio.gather主要区别总结 在Python的异步编程中&#xff0c;asyncio.wait 和 asyncio.gather 都是用于等待多个异步任务完成的工具&#xff0c;但它们在功能和使用方式上有一些关键的区别。本文将详细解释这两个函…

48-基于单片机的LCD12864时间调控和串口抱站

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机的公交报站系统&#xff0c;可以手动报站&#xff0c;站名十个。 在lcd12864上显示时间&#xff08;年月日时分秒&#xff09;和站名&#xff0c;时间可以设置&#xff0c; 仿真中可以…

如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间

如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间 一、前言二、准备工作三、扩展逻辑卷1. 检查现有 LVM 配置2. 扩展物理卷3. 扩展卷组4. 扩展逻辑卷四、调整文件系统大小1. 检查文件系统状态2. 扩展文件系统五、处理可能出现的问题1. 文件系统无法扩展2. 磁盘空间不足3…

爬虫框架快速入门——Scrapy

适用人群&#xff1a;零基础、对网络爬虫有兴趣但不知道从何开始的小白。 什么是 Scrapy&#xff1f; Scrapy 是一个基于 Python 的网络爬虫框架&#xff0c;它能帮助你快速爬取网站上的数据&#xff0c;并将数据保存到文件或数据库中。 特点&#xff1a; 高效&#xff1a;支…

Redis 分布式锁实现方案

一、概述 分布式锁&#xff0c;即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享资源的最小粒度从线程升级…

前端node.js

一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的 对象&#xff0c;用于表示固定长度的字节序列。Buffer…

Python中字符串和正则表达式

Python中字符串和正则表达式 在Python编程中&#xff0c;字符串是最常用的数据类型之一。字符串用于表示文本数据&#xff0c;而正则表达式则是一种强大的工具&#xff0c;用于处理和匹配字符串中的模式。本文将介绍Python中的字符串操作、字符串格式化以及如何使用正则表达式…

构造函数与析构函数错题汇总

构造函数不能定义返回类型&#xff0c;也没有返回类型。 堆、栈、静态存储区。栈上的对象main函数结束就释放&#xff0c;堆上的需要手动释放&#xff0c;静态存储区的在所在作用域的程序结束时释放。这里static在main函数内&#xff0c;是局部变量&#xff0c;所以作用域为…

Nginx和Apache有什么异同?

Nginx和Apache都是广泛使用的Web服务器软件&#xff0c;它们各自具有独特的特点和优势&#xff0c;适用于不同的应用场景。以下是关于Nginx和Apache的不同、相同以及使用区别的详细分析&#xff1a; 一、不同点 资源占用与并发处理能力&#xff1a; Nginx使用更少的内存和CPU资…

SQL基础入门——SQL基础语法

1. 数据库、表、列的创建与管理 在SQL中&#xff0c;数据库是一个数据的集合&#xff0c;包含了多个表、视图、索引、存储过程等对象。每个表由若干列&#xff08;字段&#xff09;组成&#xff0c;表中的数据行代表记录。管理数据库和表的结构是SQL的基础操作。 1.1 创建数据…

c语言编程1.17蓝桥杯历届试题-回文数字

题目描述 观察数字&#xff1a;12321&#xff0c;123321 都有一个共同的特征&#xff0c;无论从左到右读还是从右向左读&#xff0c;都是相同的。这样的数字叫做&#xff1a;回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求&#xff1a; 该数字的各个数位之…

亚马逊自研大语言模型 Olympus 即将亮相,或将在 LLM 竞赛中掀起新波澜

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

自然语言处理期末试题汇总

建议自己做&#xff0c;写完再来对答案。答案可能存在极小部分错误&#xff0c;不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …

腾讯微众银行大数据面试题(包含数据分析/挖掘方向)面试题及参考答案

为什么喜欢使用 XGBoost,XGBoost 的主要优势有哪些? XGBoost 是一个优化的分布式梯度增强库,在数据科学和机器学习领域应用广泛,深受喜爱,原因主要在于其众多突出优势。 首先,它的精度高,在许多机器学习竞赛和实际应用中,XGBoost 都展现出卓越的预测准确性。其基于决策…

深度学习——激活函数

一、人工神经元 1.1 构建人工神经元 人工神经元接受多个输入信息&#xff0c;对它们进行加权求和&#xff0c;再经过激活函数处理&#xff0c;最后将这个结果输出。 1.2 组成部分 输入&#xff08;Inputs&#xff09;: 代表输入数据&#xff0c;通常用向量表示&#xff0c;每…

新型大语言模型的预训练与后训练范式,Meta的Llama 3.1语言模型

前言&#xff1a;大型语言模型&#xff08;LLMs&#xff09;的发展历程可以说是非常长&#xff0c;从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初&#xff0c;LLM的训练过程只关注预训练&#xff0c;但后来逐步扩展到了包括预训练和后训练在内的完整…

[js] 函数柯里化

面试题&#xff1a;实现一个add方法&#xff0c;使计算结果能够满足如下预期&#xff1a; add(1)(2)(3) 6; add(1, 2, 3)(4) 10; add(1)(2)(3)(4)(5) 15; // 保存不定长参数 let nums []; function add(...args) { // 往数组中插入不定长参数nums.push(...args)// 判断参数…

51单片机从入门到精通:理论与实践指南常用资源篇(六)

很高兴看到大家都坚持下来了&#xff0c;学完了51单片机&#xff0c;接下来两天我会给大家两/三个案例&#xff0c;大家可以看看。 终点并非意味着结束&#xff0c;而是新的开始。这次成功的经验将成为宝贵的财富&#xff0c;激励着我们在未来的人生道路上继续勇往直前。它教会…

git rebase-优雅合并与修改提交

文章目录 简介rebase用于合并使用rebase修改提交cherry-pick 简介 在Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)中我们已经介绍了git的最常用实用的命令。 在上面说的那篇文章中&#xff0c;我们只是简单提了一下rebase。 是因为r…