LeetCode 416. 分割等和子集 416. 分割等和子集解题思路问题转化 这道题本质上是 0-1 背包问题 的变体。 首先计算数组所有元素的总和 sum。 如果 sum 是奇数,显然无法分成两个相等的整数和子集,直接返回 false。 如果 sum 是偶数,令 target = sum / 2。问题转化为:能否从数组中选出一些数字,使其和恰好为 target。 动态规划 状态定义:dp[i] 表示是否存在一个子集,其元素之和 2026-02-08 LeetCode #数组 #动态规划
LeetCode 42. 接雨水 42. 接雨水解题思路统计每个柱子的左侧和右侧最高柱子高度,积水量等于左右最高柱子较小的那个减去当前柱子高度 2026-02-08 LeetCode #数组 #双指针 #栈 #动态规划 #单调栈
LeetCode 46. 全排列 46. 全排列解题思路用全局路径数组记录当前排列,used 数组标记已使用元素,每次递归选一个未使用的数字加入路径,递归到底时拷贝路径存入结果「引用传递」,回溯时撤销选择尝试下一个可能「恢复现场」 2026-02-08 LeetCode #数组 #回溯
LeetCode 5. 最长回文子串 5. 最长回文子串解题思路 双指针法:以每个字符为中心,向两边扩散,找到最长的回文子串 具体分奇数长度和偶数长度两种情况 manacher算法:时间复杂度O(n),空间复杂度O(n),适合大数据量的情况 2026-02-08 LeetCode #双指针 #字符串 #动态规划