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

46 阅读2分钟

228.小U数数

image.png

  1. 初始化变量

    • concatenated_string = "":初始化一个空字符串,用于存放偶数拼接的结果。
    • even_number = 0:初始化一个偶数变量,从0开始。
  2. 循环拼接偶数

    • while len(concatenated_string) < n::使用while循环,条件是拼接后的字符串长度小于n
    • concatenated_string += str(even_number):将当前的偶数转换为字符串并拼接到concatenated_string中。
    • even_number += 2:将偶数递增2,准备下一个偶数。
  3. 返回结果

    • return int(concatenated_string[n-1]):当循环结束时,拼接后的字符串长度至少为n,此时返回字符串中第n个字符(由于字符串索引从0开始,所以使用n-1)。因为字符串是由数字组成,所以返回时需要将字符转换为整数。

95.字符替换和最长字串问题

image.png

  1. 遍历所有可能的两种字符组合

    • 使用两层嵌套的for循环来遍历所有可能的两种字符组合(目标字符1和目标字符2)。由于字符是从'A'到'Z',因此使用范围range(26)来遍历。
  2. 滑动窗口

    • 初始化滑动窗口的左边界left为0,初始化需要进行的修改次数changes为0。
    • 使用for right in range(n):来遍历字符串的每个字符。
    • 如果当前字符不是目标字符1或目标字符2,则changes加1。
    • 如果changes超过了k,则进入内层while循环,移动左边界来减少changes,直到changes小于等于k
  3. 更新最长连续子串的长度

    • 在每次遍历右边界时,都更新最长连续子串的长度max_len为当前长度right - left + 1和之前记录的最大长度max_len中的较大值。

124.有限制的楼梯攀登

image.png

通过使用两个数组分别记录最后一步是1步和2步的情况,我们可以更准确地计算到达第n层的不同走法数。

  1. 初始化

    • dp1[1] = 1:到达第1层且最后一步是1步的走法数。
    • dp1[2] = 1:到达第2层且最后一步是1步的走法数。
    • dp2[2] = 1:到达第2层且最后一步是2步的走法数。
    • dp1[3] = 2:到达第3层且最后一步是1步的走法数。
    • dp2[3] = 1:到达第3层且最后一步是2步的走法数。
  2. 状态转移

    • dp1[i] = dp1[i - 1] + dp2[i - 1]:从i-1层走1步到i层。
    • dp2[i] = dp1[i - 2]:从i-2层走2步到i层,前提是i-1层不能是2步。