
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
pta练习题,需要多回顾,多小结,记得常回来看看~
核心解法是深度优先搜索(DFS),遍历所有根到叶的路径;推荐用数值累加)的方式,无需字符串转换,效率更高;递归终止条件:节点为空返回 0,叶节点返回当前累积值,非叶节点返回左右子树结果之和。这个实现满足题目所有约束(节点数≤1000、深度≤10),时间复杂度 O (n)(每个节点遍历一次),空间复杂度 O (h)(h 为树的深度,递归栈空间)。暴力版(必掌握)终止条件:空节点返回 0;1 + 左子

核心技巧:用虚拟头结点解决删除头结点的边界问题,用双指针(快慢指针)实现一趟扫描找到倒数第 N 个结点。关键逻辑:快指针先移n步,快慢指针再同步移动,直到快指针到末尾,此时慢指针的下一个就是要删除的结点。内存管理:C++ 中手动创建的结点要记得delete,避免内存泄漏。你的原代码出错的核心原因是:没有处理头结点被删除的情况(比如示例 2),直接从head开始移动指针,导致删除逻辑不统一。加入虚拟
给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是 "abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。1因为无重复字符的最长子串是 "b",所以其长度为 1。3因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。
headhead。
特性直接写vector命名空间依赖无(显式指定std必须通过using导入或整个std命名冲突风险无(明确指向标准库)有(若自定义了vector类,会冲突)代码可读性高(一眼看出是标准库容器)低(需找using语句确认来源)适用场景大型项目、库开发、多人协作(推荐)小型测试代码、临时脚本(不推荐正式项目)vector和的区别,本质是 “有没有通过(或)导入std命名空间”—— 没写就必须用,写了就
【代码】cpp 05 Lambda 表达式 | std::function | STL 算法 |整数向上取整。
容器类型erase支持形式迭代器失效情况时间复杂度vectorstring单个元素、区间当前及后续迭代器失效O(n)deque单个元素、区间中间删除时两端迭代器可能失效O(n)setmap单个元素、区间、按键删除仅被删除元素迭代器失效O(log n)单个元素、区间、按键删除仅被删除元素迭代器失效(哈希表)O (1) 平均适配器(栈 / 队列)不支持erase需转移到其他容器操作顺序容器删后更迭代器
核心优化是找到结果后立即返回,避免无效循环,这是提升执行效率的关键。减少重复的和计算、简化返回逻辑,让代码更简洁且性能更好。双指针法本身已是该问题的最优解法(时间 O (n)、空间 O (1)),优化后保持了最优复杂度,仅提升代码的执行效率和可读性。双指针法的核心是移动较矮的指针,因为盛水量由矮边决定,移动高边无法提升有效高度,只会减少宽度;该解法将时间复杂度从暴力法的 O (n²) 优化到 O








