青训营X豆包MarsCode 技术训练营第三课 | 豆包MarsCode AI 刷题

112 阅读3分钟

一、观光景点组合得分问题

问题描述

小R正在研究一组观光景点,每个景点都有一个评分,保存在数组 values 中,其中 values[i] 表示第 i 个观光景点的评分。同时,景点之间的距离由它们的下标差 j - i 表示。

一对景点 (i < j) 的观光组合得分为 values[i] + values[j] + i - j,也就是两者评分之和减去它们之间的距离。

小R想知道,在哪种情况下能够获得观光景点组合的最高得分。


测试样例

样例1:

输入:values = [8, 3, 5, 5, 6]
输出:11

样例2:

输入:values = [10, 4, 8, 7]
输出:16

样例3:

输入:values = [1, 2, 3, 4, 5]
输出:8

解题思路:

定义一个初始组合,从第二个元素开始遍历

计算当前j的values[j] - j

更新最大组合得分

更新max_i_plus_values

具体代码:

image.png

输出结果:

image.png

二、最少前缀操作问题

问题描述

小U和小R有两个字符串,分别是SS和TT,现在小U需要通过对SS进行若干次操作,使其变成TT的一个前缀。操作可以是修改SS的某一个字符,或者删除SS末尾的字符。现在你需要帮助小U计算出,最少需要多少次操作才能让SS变成TT的前缀。


测试样例

样例1:

输入:S = "aba", T = "abb"
输出:1

样例2:

输入:S = "abcd", T = "efg"
输出:4

样例3:

输入:S = "xyz", T = "xy"
输出:1

样例4:

输入:S = "hello", T = "helloworld"
输出:0

样例5:

输入:S = "same", T = "same"
输出:0

解题思路:

计算需要删除的字符量

截断S,使长度不超过T

计算需要修改的字符数量

总操作次数

具体代码:

image.png

运行结果:

image.png

三、小C的好数

问题描述

小C对“好数”非常感兴趣,她定义一个不含前导零的正整数为“好数”,如果它的所有数位最多包含两种不同的数字。例如,数字 2323239111,和 101 都是好数。现在小C想知道,从1到nn之间有多少个好数。

例如:当n=110n=110时,所有的1位数、2位数,以及一些3位数(如 100101)都是好数,一共有102个。


测试样例

样例1:

输入:n = 110
输出:102

样例2:

输入:n = 1000
输出:352

样例3:

输入:n = 1
输出:1

解题思路:

将数字转化为字符串,获取数字中不同的字符,如果字符数量小于等于2,则计数器加1。

具体代码:

image.png

输出结果:

image.png

总结:

代码学习千变万化,想要学好一门语言,不仅要有牢固的语言知识,更要锻炼语言能力,多学多练多理解才能学好代码。

遇到难题应该先提取题中知识,应该从哪里下手,做什么,怎么做极为重要,这关乎这我们接下来整体的思路。