122:组合总和II

LeetCode 40 https://leetcode.cn/problems/combination-sum-ii/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 为了避免得到重复的答案,首先对数组排序。如果选,递归到 i + 1,如果不选,跳过所有等于当前数的数,递归到 i + k。也就是对于相同的元素,只能按照顺序选,不能跳过一个选后面的。 时间复杂度:\(O(n\*2^2)\) 空间复杂度:O(n) ...

七月 15, 2025 · Cassius

111:全排列 II

LeetCode 47 https://leetcode.cn/problems/permutations-ii/description/ 难度:中等 高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/ 本题是有重复元素的全排列。如何避免得到重复的结果呢?可以把相同的元素排一个顺序,只能从左往右按顺序排。 为方便判断,先把 nums 排序(从小到大或者从大到小都可以)。 如果 nums[i] != nums[i−1],那么 nums[i] 就是所有等于 nums[i] 的数中的第一个数。我们规定:这种情况可以随意填。 如果 nums[i] == nums[i−1],继续讨论: 如果 nums[i−1] 没有填入排列,为了避免生成重复的排列,绝对不能填 nums[i],直接 continue。这会导致后续所有等于 nums[i] 的数全部 continue,因为对于后面的 nums[i] 来说,nums[i] 和前面的数 nums[i−1] 相等,并且 nums[i−1] 没有填入排列。 如果 nums[i−1] 已经填入排列,那么 nums[i] 是剩余元素(子问题)中的第一个等于 nums[i] 的数,可以随意填。 时间复杂度:O(n⋅n!),其中 n 为 nums 的长度。分析方法同 46 题的题解。 空间复杂度:O(n)。返回值的空间不计入。 ...

七月 13, 2025 · Cassius