复习:算法思路
约 10 分钟
最后复习六种最常用的思路:枚举、模拟、贪心、递归、分治、二分。学到这里,你要能对每一种说出"它适合什么样的题"——认得工具,遇到题才知道该抽哪一把。
比如"二分"适合在有序数据里快速找数,就长这样:
#include <iostream>
using namespace std;
int main() {
int a[5] = {1, 3, 5, 7, 9}, target = 7;
int lo = 0, hi = 4;
while (lo <= hi) {
int mid = (lo + hi) / 2;
if (a[mid] == target) { cout << "在第 " << mid << " 位" << endl; break; }
else if (a[mid] < target) lo = mid + 1;
else hi = mid - 1;
}
return 0;
}
要注意:二分的大前提是数据"必须先排好序",无序的数组用二分会找错。六种思路各有各的用武之地,多做题,慢慢就会有"一看题就知道用哪种"的直觉。
小纸条
给每种写一句适用场景。
登录 后可看答案