ClarkChen Blog

Full Stack Engineer

排序和查找是最常见的算法基本功。

常见排序

  • 冒泡、选择、插入:易懂,适合入门
  • 快速排序:平均性能优秀
  • 归并排序:稳定,适合大规模数据
  • 堆排序:空间友好,时间稳定

常见查找

  • 顺序查找:O(n)
  • 二分查找:O(log n),前提是数据有序
  • 哈希查找:平均 O(1)

入门建议

  • 先理解每种算法思想,再背复杂度
  • 多画过程图,避免只记结论
  • 每类至少手写 1~2 次

图用于描述“多对多”关系,比如地图、社交网络、依赖关系。

图的基本概念

  • 顶点(Vertex)
  • 边(Edge)
  • 有向图 / 无向图
  • 带权图

经典问题

  • 最短路径:Dijkstra、Floyd、SPFA
  • 最小生成树:Prim、Kruskal
  • 依赖排序:拓扑排序

场景例子

  • 导航:最短路径
  • 组网布线:最小生成树
  • 构建系统任务编排:拓扑排序

树用于表达层级关系,堆适合快速取最值。

二叉树基础

  • 每个节点最多两个孩子
  • 常见遍历:前序 / 中序 / 后序 / 层序

平衡树(AVL / 红黑树)

  • 目标:避免树退化成链表
  • 常见复杂度:查找、插入、删除约 O(log n)

堆(Heap)

  • 大顶堆:堆顶最大
  • 小顶堆:堆顶最小
  • 常见场景:优先队列、TopK、定时任务

一句话理解

  • 需要“有序查找”:平衡树
  • 需要“频繁取最大/最小”:堆

线性结构是最基础的一类结构,元素之间是一对一关系。

数组 vs 链表

  • 数组:随机访问快(O(1)),中间插入删除慢(O(n))
  • 链表:插入删除灵活(已知节点时 O(1)),随机访问慢(O(n))

栈(Stack)

  • 规则:后进先出(LIFO)
  • 常见操作:push / pop / peek
  • 场景:函数调用栈、表达式求值、括号匹配

队列(Queue)

  • 规则:先进先出(FIFO)
  • 常见操作:offer / poll / peek
  • 场景:任务调度、消息缓冲、BFS

选型口诀

  • 频繁按下标取值:优先数组
  • 频繁中间插删:优先链表
  • 只关心“最近一次”:用栈
  • 只关心“最早进入”:用队列

工厂模式的好处是调用函数的客户端和工厂类交互获得实体,而不是直接和具体的业务类交互,商品的内容更新的时候,客户端无需变动,较为方便的实现了松耦合,高内聚的基本原则。

工厂类的设计模式总共有三种:简单工厂,工厂模式和抽象工厂, 下面将解析一下三种模式的应用场景。

我们假设一种工厂,最开始他是供应宠物包括,猫,狗和鱼,后来随着业务的变更凯斯供应宠物玩具,猫玩具,狗玩具和鱼玩具。

阅读全文 »

在面对互联网金融领域的各种借贷产品,例如装修贷款,信用卡借贷,借呗花呗,京东白条,一定要注意他们的利率和还款模式
否则很容被套路

阅读全文 »

2021年02月21日,我遇到的问题是在 typero里面顺利编辑的Latex 公式,但是在Hexo生成的页面里面不显示
需要安装一些插件和做一些配置,就ok了

阅读全文 »

首次启动

  • 首先把 项目 clone 到本地

  • 安装nodejs,建议你直接官网下载最新的编译器,NodeJS

  • 检查下版本, 以下为最新版本

    阅读全文 »
0%