P43 字符串相乘
本文讲解LeetCode“字符串相乘”问题的解法。作者指出该题属于高精度乘法,不能直接转换为整型计算以避免溢出。解法模拟竖式乘法过程:用两个嵌套循环处理每一位的相乘,并将结果累加到对应位置。随后统一处理进位,最后将结果数组转为字符串并去除前导零。代码使用C++实现,通过倒序遍历原字符串完成逐位运算,最终返回正确结果。关键细节包括进位处理和前导零的删除,确保输出格式正确。题目虽思路直观,但边界处理需谨慎。
本文讲解LeetCode“字符串相乘”问题的解法。作者指出该题属于高精度乘法,不能直接转换为整型计算以避免溢出。解法模拟竖式乘法过程:用两个嵌套循环处理每一位的相乘,并将结果累加到对应位置。随后统一处理进位,最后将结果数组转为字符串并去除前导零。代码使用C++实现,通过倒序遍历原字符串完成逐位运算,最终返回正确结果。关键细节包括进位处理和前导零的删除,确保输出格式正确。题目虽思路直观,但边界处理需谨慎。
本文介绍力扣经典题目“接雨水”的解法。通过双指针技巧,从数组两端向中间遍历,维护左右两侧的最大高度(lmax 和 rmax)。每次移动较小一侧的指针,该位置能接的雨水量为当前侧最大值减去其高度,并累加结果。核心思想是:每个位置能接的雨水由左右两边最大高度中的较小者决定。算法时间复杂度为 O(n),空间复杂度为 O(1),高效且易于实现。
本文讨论力扣第32题“最长有效括号”,要求找出给定括号字符串中最长有效括号子串的长度。作者首先尝试使用动态规划(DP)方法,定义 `dp[i]` 表示以第 `i` 个字符结尾的最长有效括号长度。状态转移分两种情况:当 `s[i] == ')'` 时,若前一字符为 `'('`,则形成 `"()"` 结构;否则检查是否能与更左侧的 `'('` 匹配,并结合已有的有效长度进行更新。优化后的 DP 解法时间复杂度为 O(n),空间复杂度为 O(n)。此外,作者指出该题也可用栈来解决,遍历字符串时利用栈存储下标,通过匹配括号更新最大长度,同样可达到 O(n) 时间效率。整体核心在于合理设计状态转移或利用栈维护未匹配位置。