简单题合集(2) | 豆包MarsCode AI刷题

109 阅读2分钟

88 连续字串和的整除问题

问题理解
  1. 连续子序列:我们需要找到所有可能的连续子序列,并计算它们的和。
  2. 整除条件:一个子序列的和能够被 b 整除,意味着这个和模 b 的余数为 0。
解题思路
  1. 初始化一个哈希表 remainderCount 来记录每个余数的出现次数。
  2. 遍历序列,计算前缀和,并更新哈希表。
  3. 如果某个余数已经出现过,说明存在满足条件的子串。
核心代码

关键知识点
  1. 前缀和的概念
    • 前缀和数组 prefixSum 记录从序列开始到当前位置的和。
    • prefixSum[i] 表示 a[0] + a[1] + ... + a[i]
  1. 利用哈希表优化
    • 我们可以使用哈希表来记录前缀和模 b 的余数出现的次数。
    • 如果 prefixSum[i] % b == prefixSum[j] % b,那么 a[i+1] + a[i+2] + ... + a[j] 的和能够被 b 整除。

101 兔群繁殖之谜

问题理解

根据题目描述,这是一个典型的斐波那契数列问题。

解题思路
  1. 初始化:我们需要初始化前两个月的兔子对数。
  2. 迭代计算:从第三个月开始,每个月的兔子对数是前两个月兔子对数之和。
  3. 返回结果:返回第 n 个月的兔子对数。
核心代码

关键知识点

斐波那契数列的定义:

  • F(1) = 1
  • F(2) = 2
  • F(n) = F(n-1) + F(n-2) 对于 n > 2

130 字符串最短循环子串

问题理解

循环子串:一个字符串 s 是由子串 t 循环构成的,意味着 s 可以表示为 t + t + ... + t。例如, "abcabcabcabc" 是由 "abc" 循环构成的。

解题思路
  1. 遍历可能的子串长度:从1到字符串长度的一半(因为最短的循环子串长度不可能超过字符串长度的一半)。
  2. 检查子串是否能构成原字符串
    • 对于每个子串长度,提取子串并重复拼接,直到长度不小于原字符串。
    • 检查拼接后的字符串是否等于原字符串。
核心代码

154 小C点菜问题

解题思路
  1. 过滤价格:首先,我们需要过滤掉所有价格超过 m 的菜品。
  2. 统计价格频率:对于剩余的价格,统计每个价格的频率。
  3. 找出最大频率:在统计的价格频率中,找出最大的频率值,这个值就是小C最多可以点的菜的数量。
核心代码