青训营刷题日记05 | 豆包MarsCode AI 刷题亮点与创新

100 阅读3分钟

豆包MarsCode AI 越刷越牛逼,题目:一个整数如果由相同的数字构成,则称为完美整数。例如: 1、11、333 是完美整数。 12、19、101 是不完美整数。 现在,你需要计算给定区间 [x, y] 中有多少个整数是完美整数。

要解决这个问题,我们需要检查区间 ([x, y]) 中的每个整数是否是“完美整数”。一个完美整数的定义是:所有数字都相同。

思路

  1. 完美整数的判断:对于给定的整数,我们可以将其转为字符串,并检查该字符串的所有字符是否相同。即,如果整数 num 转换为字符串后的结果 str(num) 中所有字符相同,则 num 是一个完美整数。

  2. 区间遍历:遍历从 xy 的每个整数,并对每个整数进行完美整数的判断。如果是完美整数,则计数+1。

  3. 优化判断:对于一个整数 num,如果它是完美整数,那么它的所有字符相同,比如 11, 22, 333 等等。我们可以直接检查 str(num).count(str(num)[0]) == len(str(num)) 来判断所有字符是否相同。

代码实现

def solution(x, y):
    count = 0
    for num in range(x, y + 1):
        str_num = str(num)
        # 检查是否所有字符都相同
        if str_num.count(str_num[0]) == len(str_num):
            count += 1
    return count

if __name__ == "__main__":
    # 测试用例
    print(solution(1, 10) == 9)  # 1, 2, 3, ..., 9 是完美整数,10不是
    print(solution(2, 22) == 10)  # 2, 3, ..., 9, 11, 22 是完美整数

代码解析

  • 循环遍历区间for num in range(x, y + 1),遍历从 xy 的所有整数。
  • 完美整数判断:对每个整数 num,将其转为字符串 str_num。如果 str_num.count(str_num[0]) == len(str_num) 为真,则说明所有字符都相同,即 num 是完美整数。
  • 计数:对符合条件的数字增加计数 count

复杂度分析

  • 时间复杂度:(O(n \cdot d)),其中 (n) 是区间长度 ((y - x + 1)),(d) 是数字的位数。每个数字最多需要检查其每一位是否相同。
  • 空间复杂度:(O(1)),只需要存储计数器变量。

测试案例

  • 输入:x = 1, y = 10,输出:9,因为从 19 这 9 个数都是完美整数。
  • 输入:x = 2, y = 22,输出:10,因为从 29 的数字以及 1122 是完美整数。

MarsCode AI刷题的亮点

精选真题: MarsCode AI提供了大量的精选真题,这些题目来源于各大知名面试公司和编程竞赛。这种高质量的题目不仅涵盖了广泛的算法和数据结构知识,而且还能够帮助用户提前适应面试中的真实场景,提升解决问题的能力。

学习的重要性与独特价值

  • 个性化题目推荐:平台根据用户的水平和进度,推荐适合的题目,确保每位用户都能在合适的挑战中成长。
  • 云端编辑器:提供便捷的在线编程环境,用户可以随时随地进行练习,无需安装任何软件,增强了学习的灵活性。