学习方法与心得|豆包MarsCode AI刷题

67 阅读3分钟

学习方法与心得笔记

题目解析

题目描述:小M有一个独特的方式来收拾家中的盘子。每次用餐后,他会将盘子按照他们的序号顺序叠放。盘子的序号都是唯一的整数,并且在收拾前就是递增的。小M的叠放规则是,每一堆盘子的序号都是连续递增的,并且至少包含3个盘子。需要编写程序帮助小M确定盘子的叠放方式。

示例

  • 输入:[-3, -2, -1, 2, 10, 15, 16, 18, 19, 20]
  • 输出:"-3--1,2,10,15,16,18-20"

思路

  1. 遍历盘子列表,检查每个盘子是否与前一个盘子连续。
  2. 如果连续,则继续检查下一个盘子。
  3. 如果不连续,则检查当前连续的盘子数量是否大于等于3。
  4. 如果大于等于3,则将这些盘子表示为连续的范围。
  5. 如果小于3,则单独列出这些盘子。
  6. 最后处理最后一个连续的盘子序列。

代码详解

python
浅色版本
def solution(plates: list[int], n: int) -> str:
    if n == 0:
        return ""
    
    result = []
    start = plates[0]
    count = 1
    
    for i in range(1, n):
        if plates[i] == plates[i-1] + 1:
            count += 1
        else:
            if count >= 3:
                result.append(f"{start}-{plates[i-1]}")
            else:
                result.extend(map(str, plates[i-count:i]))
            start = plates[i]
            count = 1
    
    # 处理最后一段
    if count >= 3:
        result.append(f"{start}-{plates[-1]}")
    else:
        result.extend(map(str, plates[n-count:n]))
    
    return ",".join(result)

if __name__ == "__main__":
    # 测试用例
    print(solution([-3, -2, -1, 2, 10, 15, 16, 18, 19, 20], 10) == "-3--1,2,10,15,16,18-20")
    print(solution([-6, -3, -2, -1, 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20], 20) == "-6,-3-1,3-5,7-11,14,15,17-20")
    print(solution([1, 2, 7, 8, 9, 10, 11, 19], 8) == "1,2,7-11,19")

知识总结

在使用豆包MarsCode AI刷题的过程中,我总结了以下知识点:

  1. 列表遍历:通过for循环遍历列表,检查每个元素是否满足特定条件。
  2. 条件判断:使用if语句进行条件判断,根据条件执行不同的代码块。
  3. 字符串格式化:使用f-string进行字符串格式化,方便地将变量插入字符串中。
  4. 列表操作:使用extend方法将多个元素添加到列表中,使用map函数将列表中的元素转换为字符串。

学习计划

  1. 制定刷题计划:每天至少刷3道题,涵盖不同的知识点和难度级别。
  2. 错题复习:每周复习一次错题,确保理解错误的原因并掌握正确的解法。
  3. 知识点总结:每刷完10道题,总结一次知识点,巩固所学内容。
  4. 代码优化:定期回顾之前的代码,尝试优化算法和代码结构。

工具运用

  1. 豆包MarsCode AI:利用AI刷题功能,自动检查代码错误,提供解题思路和优化建议。
  2. 在线编程平台:使用LeetCode、牛客网等在线编程平台,进行实战练习。
  3. 学习社区:加入编程学习社区,与他人交流学习心得和解题技巧。

通过以上学习方法和工具的结合使用,我相信能够更高效地提升编程能力,掌握更多的算法和数据结构知识。