Alomerry Wu @ alomerry.com

算法手册

Jul 7, 2022 · 2min · 767 ·

list

  • 基本思想

    • 动态规划
    • 贪心
    • 回溯
    • 分治
    • 枚举
  • 搜索(dfs/bfs)

  • 查找

    • 二分查找
    • 散列查找
  • 字符串匹配

    • kmp
    • bm
    • trie
  • 排序

  • 并查集、djstra、topo

    • 关键路径
    • 最小生成树
    • 最短路径
    • 拓扑排序
    • 大顶堆
    • 优先队列
    • 二叉树
    • AVL 红黑树
    • B/B+树
  • 散列表

    • 位图
    • 动态扩容
  • 线性表

  • 二叉树和 B+ 树

  • 快排怎么实现

    • 双指针,分治
  • 熟悉哪些数据结构?

    • 排序
      • 冒泡、选择、插入;归并排序、快排序;堆排序
    • 二叉搜索树、平衡二叉树
  • 最长递增子序列

  • 两个 list 求相同元素

    • 排序后双指针法
    • 使用 map
  • 有两个有限队列,求两个队列的相同元素

    • 使用 map
    • 排序后双指针法
  • 给定一个数 n,如 23121;给定一组数字 A 如 {2,4,9},求由 A 中元素组成的、小于 n 的最大数。如小于 23121 的最大数为 22999

  • 给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。这个路径的开始节点和结束节点可以是二叉树中的任意节点

  • 二分查找

    • 排序后从数组中间区分查询左部分或右部分;递归
  • 字符串中最长不重复字符的子字符串

  • 有序数列合并

    • 双指针法
  • 青蛙跳楼梯

  • 反转链表

  • 跳表

  • 单向链表倒数第 K 个节点

  • 数组、链表的区别,适用的场景

    • 数组查询的时间复杂度是 o(1),适合插入少,读多的场景
    • 链表插入的事件复杂度最坏是 o(n),适合插入多的场景
  • 哈希算法,列举几种 X

  • 实现 LRU

  • 平衡二叉树查找第 k 大的节点

  • 拓扑图求路径数,输入一个二维数组表示图,输出从起始点到终点可能的路径数

  • 九键手机 输入是只包含 1-9 的字符串,输出是对应按键可能的组合

  • 链表查找倒数第 k 个节点 追问:怎么把链表线性遍历提速

  • 二叉树多个节点的最近公共祖先

  • 二叉树两个节点的共同父节点

  • lru 算法

  • 十万个数中找出最大 1000 个数

  • 二叉树层序遍历

    • 使用队列,遍历左右孩子后放入队列,循环直到队列为空
  • 判断回文字符串

  • 复杂度判断一个数是否为质数

  • 第 K 大

  • 一组有序可重复数组找到某个最后出现的数的索引

    • 使用 map,遍历每次更新数的最新出现索引
  • 寻找 K 个高频的数字

    • 遍历使用 map 记录出现次数同时记录最高频
  • 实现双向链表,根据索引插入节点

  • 给定一个有序数组和一个数字,需要你判断出这个数字在数组里的出现次数,要求时间复杂度为

 
 comment..
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.0.1
Theme by antfu
2018 - Present © Alomerry Wu