拿下技术面上传简历

有 n=100000 个闭区间 [l_i, r_i],要选出尽可能多的区间,使它们两两不重叠(后一个区间的左端点 ≥ 前一个区间的右端点)。你打算按右端点从小到大排序,依次选与已选区间不重叠的区间。请说明这个贪心为什么正确,给出交换论证或反证。如果改成按长度从小到大排序,还对不对?如果不对,举一个反例。

数据结构与算法动态规划与贪心1-3 年知识点 1 个

面试官在考什么

判断是否能对贪心策略给出严格正确性证明,而不是凭感觉说“局部最优就是全局最优”。

贪心证明

回答框架 · 前两步

  1. 正确贪心:按右端点升序排序,依次选与上一个已选区间不重叠的区间。
  2. 交换论证:设最优解第一个区间为 O,贪心第一个为 G,则 r_G ≤ r_O。把 O 换成 G,G 结束不晚于 O,不会与最优解后续区间冲突,得到同样优的解;归纳即可。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题