type
status
date
slug
summary
tags
category
icon
password
Property
枚举算法(Enumeration Algorithm):也称为穷举算法,指的是按照问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中,既不能遗漏也不能重复。
核心思想:通过列举问题的所有状态,将它们逐一与目标状态进行比较,从而得到满足条件的解。
要点
- 给出解空间:建立简洁的数学模型。枚举的时候要想清楚:可能的情况是什么?要枚举哪些要素?
- 减少枚举的空间:枚举的范围是什么?是所有的内容都需要枚举吗?
- 选择合适的枚举顺序:根据题目判断
两数之和
题目:给定一个整数数组
nums
和一个整数目标值 target
,请你在该数组中找出和为目标值 target
的那两个整数,并返回它们的数组下标。可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。可以按任意顺序返回答案。示例:
计数质数
题目:给定整数
n
,返回 所有小于非负整数n
的质数的数量 。示例:
质数的定义:在大于的自然数中,除了和它本身以外不再有其他因数的自然数。因此对于每个数,可以从小到大枚举 中的每个数,判断 是否为的因数。
考虑到如果 是 的因数,那么也必然是的因数,因此只要校验或者即可。而如果每次选择校验两者中的较小数,则不难发现较小数一定落在的区间中,因此只需要枚举中的所有数即可,这样单次检查的时间复杂度从降低至了。