数据结构

    • HashSet
    • HashTable
    • TreeSet
    • PriorityQueue
    • Stack
      • 下一个更大/小的
      • 「第一个一个大于 xxx」或者「第一个小于 xxx」
      • 固定区间内最值
      • 后面第一个比我大的
        • 正向遍历数组
        • 从头至尾单调递减(因为遇到小的弹出,遇到大于等于的停下,所以从头到尾递减)
        • 遇到比自己小的弹出,此时被弹出元素找到后面第一个比他大的
        • 最后队列中剩下的元素就是后面没有比他大的
      • 后面第一个比我小的
        • 正向遍历数组
        • 从头到尾单调递增(因为遇到大的弹出,遇到小于等于的停下,所以从头到尾递增)
        • 遇到比自己大的弹出,此时被弹出元素找到后面第一个比他小的
        • 最后队列中剩下的元素就是后面没有比他小的

    算法

    • 双指针
      • 相遇指针:two sum,接雨水
      • 快慢指针
    • 滑动窗口
      • 满足某个条件的连续数组的最大或者最小长度
    • 二分法
      • 存在可以除去一半解空间的判断方法,比如有序数组。
    • 前缀和
      • 一段连续数组和为x,记得加个0代表空数组。
      • 用于构建有序数组从而进行二分。
    • 贪心
    • 动态规划
    • 回溯
    • DFS
    • BFS
    • 拓扑排序 - DFS/BFS
    • 位运算
    • TreeSet/Map

    去重

    • boolean visited[] 数组
    • HashSet

    Tricky

    StringBuilder deleteCharAt