暴力破解法 是指尝试每个可能的候选者直到找到答案。它很简单且保证正确,但通常速度很慢——通常是指数级或 O(n²)。
基本思想
穷举解空间,不使用任何巧妙的快捷方式。
示例:找到一对数求和等于目标值(暴力破解法)
python
def two_sum_brute(nums, target):
for i in range(len(nums)):
for j in range(i + 1, len(nums)): # check every pair
if nums[i] + nums[j] == target:
return (i, j)
return None
# O(n^2) time, O(1) space
哈希表可以将其转化为 O(n),但暴力破解版本是显而易见的起点。
何时可以接受
- 输入很小 的情况,其中常数因子和 n 都很小。
- 作为 正确性基准,用于验证更快的算法。
- 当问题运行频率低且清晰度优于速度时。
- 在面试中,先陈述此方法,然后优化。
陷阱
在大输入上使用暴力破解会导致超时。在提交前始终估计解空间的大小。
为什么这很重要
暴力破解是诚实的首个解决方案:它证明了问题是可解的,并明确说明了什么是
