计算机学习笔记 力扣真题带练

📅 2026/7/29 11:02:44
计算机学习笔记 力扣真题带练
7月28日课程复习笔记算法入门与核心能力训练详细版本次课程以现场刷题为核心通过实战演练的方式系统讲解了多个经典算法问题的解法。课程不仅关注具体题目的实现更强调了高效解题所需的核心能力如快速阅读、瞬时记忆和心算能力旨在帮助学员建立竞赛级的解题状态。第一部分算法训练规范与目标训练目标通过完成不同难度的算法题来提升编程能力最终目标是获得算法竞赛的省三、省一乃至国一奖项。时间标准课程规定了严格的解题时限超时完成则视为无效。这是衡量是否真正掌握知识的关键标准。简单题10分钟内完成15分钟算半题。中等题25分钟内完成35分钟算半题。困难题40分钟内完成55分钟算半题。学习原则强调必须在规定时间内独立完成题目培养“读完题即出思路”的高效状态。拖延时间学会的知识不算真正掌握。建议通过刷题如200道简单题来达到省三水平再通过挑战中等和困难题目来进一步提升。第二部分核心算法题精讲1. 字符串处理千分位分隔符题目给定一个整数n要求从右往左每隔三位添加一个点.作为千分位分隔符并返回字符串。解法一字符串操作将整数转换为字符串。从后往前遍历字符串每处理三位字符就插入一个点。对于题目给定的数据范围最多10位直接使用字符串拼接的性能损耗可以忽略。解法二数学运算通过% 10和/ 10操作逐位取出数字。同样从后往前拼接每三位加点。优化与关键点性能考量如果数字特别长如1000位字符串拼接会频繁创建新对象影响性能。此时应使用StringBuilder或预分配固定大小的char数组来处理最后再转成字符串这样可以显著降低内存消耗。边界情况注意数字不足三位时保持不变。从后往前处理是核心思路。循环控制需要一个计数器来跟踪拼接次数达到三次就执行加点操作。2. 完全二叉树的最近公共祖先 (LCA)题目在一个完全二叉树中找到两个指定节点的最近公共祖先。核心思想利用完全二叉树的特性可以通过数组索引来模拟树的结构从而快速定位父子关系。数组映射规律对于任意节点i其左子节点编号为2*i 1右子节点编号为2*i 2。反过来对于任意子节点j其父节点编号为(j-1) / 2若j为奇数是左子节点或(j-2) / 2若j为偶数是右子节点。解法分别追溯两个目标节点的祖先路径直到根节点。比较两条路径第一个重合的节点即为最近公共祖先。遍历方式广度优先遍历 (BFS)借助队列实现层级遍历。处理父节点前需先将其子节点入队。遍历时即使子节点为空null也需存入数组以准确还原树的结构关系。深度优先遍历 (DFS)使用递归实现代码更简洁。可以从上往下快速定位目标节点。3. 字符串数值转换与求和题目将字符串中的每个字母转换为其在字母表中的位置值a0, b1, ...然后将这些数字按顺序连接成一个整数。判断两个字符串转换后的数值之和是否等于目标字符串的数值。解法字符转数字利用ASCII码的连续性通过字符 - a即可得到其对应的数值无需复杂的if判断。数字拼接遍历字符串将每个字符转换后的数值拼接到结果中。拼接逻辑为result result * 10 new_digit。关键点理解字符在内存中是连续编码的这是该算法成立的底层基础。4. 数组操作正整数与-1题目给定一个包含正整数和-1的数组需要为每个-1找到一个对应的正整数。规则是正整数被添加到结果数组的头部遇到-1时统计从当前位置开始连续的-1的个数k若k不超过结果数组的长度则取出第k个元素添加到结果数组若k超过长度则添加-1。解法遍历原数组根据遇到的元素类型正整数或-1执行相应操作。需要一个变量来标记上一个数是否为-1以正确统计连续的-1个数k。关键点这道题极其考验瞬时记忆力和对复杂规则的理解能力。题干描述繁琐需要耐心梳理逻辑。可以尝试用“倒序取数”的思路来规避“整体前移”的性能损耗。第三部分解题核心能力要求课程强调算法竞赛不仅是编程能力的比拼更是综合素质的较量。高效阅读读题速度要快能在2-3分钟内快速理解题意抓住核心规则。瞬时记忆力需要高度集中注意力准确记住题目的所有细节和规则避免过度依赖草稿纸。大脑计算速度提升心算和瞬时推演能力能在脑海中快速模拟多种解决方案减少对纸笔的依赖。心态调整面对长题干和复杂逻辑时要保持耐心和专注将其视为对心理素质的考验。长题干不仅是考点更是心理战专门用来淘汰心态浮躁的参赛者。