区间问题

基本方法

  • 双指针(滑动窗口)

    • 定长滑动

    • 变长滑动

  • 扫描线算法

Index

会议室

LintCode - 920. 会议室

问题描述

给定一系列的会议时间间隔,包括起始和结束时间[[s1,e1],[s2,e2],…(si < ei),
确定一个人是否可以参加所有会议。

样例
给定区间=[[0,30],[5,10],[15,20]],返回false。

思路

  • 排序后判断左右区间

C++

会议室 II(扫描线算法)

LintCode - 919. 会议室 II

问题描述

思路

  • 扫描线算法,这里应用了该算法的思想

    • 所有开始时间标记 +1,结束时间标记 -1

    • 每当扫描线经过一个节点(开始或结束)时,就累计该节点的标记值;

    • 累计值的最大值即为答案;

C++

合并区间

LeetCode - 56. 合并区间 LintCode - 156. 合并区间

问题描述

C++

划分字母区间(双指针)

LeetCode - 763. 划分字母区间 LintCode - 1045. 分割标签

问题描述

思路

  • 双指针 + map

  • 先遍历一次,记录每个字符最后出现的位置

  • 再次遍历时不断更新高位指针的位置

C++

最后更新于

这有帮助吗?