女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

女孩要连续处理很多“谁最先报名”的请求。机器人先看操作,而不是先挑一个听起来厉害的算法。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 明确操作按报名先后取人
  2. 保留顺序选择队列
  3. 处理规模估算人数与次数
  4. 验证规则先来的先处理

数据结构与算法要一起服务任务。

看数据怎么变化、最常查询什么、规模多大,再选择。结构保存需要的关系,算法利用这些关系完成操作。

01先选算法还是先选数据结构?

通常二者是一起考虑的。

因为“数据怎么存”会影响“算法怎么处理”,算法需求也会反过来决定需要什么结构。

02先看数据关系

顺序数据

数组 / vector

后进先出

stack

先进先出

queue

一般连接

graph

03再看最常见操作

问题到底经常做什么:

  • 按下标访问?
  • 找最小值?
  • 不断插入删除?
  • 寻找最短路?
  • 大量区间查询?

04再看数据规模

同样的逻辑:

n ≤ 100

O(n²) 可能非常轻松。

n ≤ 200000

O(n²) 通常就太大了。

05题目关键词能直接决定算法吗?

不能机械对应。

06怎样形成选择流程?

建立模型列出可行算法用数据范围筛选

最后再比较实现难度、空间和正确性风险。

你已经知道了什么

  • 数据结构和算法应该一起设计。
  • 先看数据关系和常用操作。
  • 数据规模决定某些复杂度是否可行。
  • 题目关键词不能机械套算法。
  • 正确模型 + 复杂度估算是选择方案的核心。

下一篇:什么是边界情况?

轮到你来试一试

如果任务改成“撤销最近一次报名”,队列还是最直接的选择吗?

想好了吗?点开看解释

最近一次优先撤销更像栈。任务规则变了,合适的操作顺序也会变。