复习:算法思路

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;
}

要注意:二分的大前提是数据"必须先排好序",无序的数组用二分会找错。六种思路各有各的用武之地,多做题,慢慢就会有"一看题就知道用哪种"的直觉。

小纸条

给每种写一句适用场景。

登录 后可看答案

复习:算法思路 · C++ 入门 · op599 课程