Skip to content

Contributors Forks Issues MIT License Stargazers

算法设计

数据结构

数据结构是一种组织和存储数据的方式,它提供了对数据的操作和访问方法。

数组(Array)

数组是一种线性数据结构,由相同类型的元素按顺序存储。可以通过索引来访问数组中的元素,具有常数时间复杂度的随机访问。

链表(Linked List)

链表是由节点组成的线性数据结构,每个节点包含一个数据项和指向下一个节点的引用。链表可以是单链表、双链表或循环链表。

栈(Stack)

栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。常见的应用场景包括函数调用、表达式求值和撤销操作等。

队列(Queue)

队列是一种先进先出(FIFO)的数据结构,只允许在队尾插入元素,在队头删除元素。常见的应用场景包括任务调度、消息传递和缓冲区管理等。

树(Tree)

树是一种非线性数据结构,由节点和边组成。树的每个节点可以有多个子节点,但每个节点只有一个父节点。常见的树结构包括二叉树、堆和平衡树等。

图(Graph)

图是由节点和边组成的非线性数据结构,用于表示对象之间的关系。图可以是有向图或无向图,支持各种算法如最短路径、最小生成树和网络流等。

算法概要

计算机算法是一系列定义明确的指令,用于解决某个问题或执行某项任务。算法在计算机科学与编程领域中非常关键,它们能够让计算机执行各种复杂的数据处理工作。一个好的算法能够高效地运用计算资源,比如处理器时间和内存空间,来快速且准确地得出结果。

算法的设计和分析主要关注算法的正确性和效率。效率通常涉及算法的时间复杂度(即算法所需时间)和空间复杂度(即算法所需内存空间)。时间和空间复杂度通常用大O表示法(Big O notation)来描述,该表示法可以大致描述算法的规模增长对时间或空间需求的影响。

搜索算法

全文搜索算法,如倒排索引、布尔查询等,用于提供搜索引擎服务。 图搜索算法,如BFS(广度优先搜索)和DFS(深度优先搜索),用于社交网络图谱分析。

排序算法

快速排序、归并排序、堆排序等算法用于数据排序,提升用户界面和体验,如电商平台的商品列表排序。

压缩算法

赫夫曼编码、LZ77、LZ78、Deflate等用于数据压缩,在网络传输中减少数据量,提高效率。

加密算法

对称加密算法(如AES)、非对称加密算法(如RSA)和散列函数(如SHA系列)用于数据加密和认证,保障用户数据隐私和网络通信安全。

机器学习算法

监督学习算法(如决策树、支持向量机、神经网络),无监督学习算法(如K-Means、PCA)和强化学习算法在推荐系统、广告投放、语音识别等方面有着广泛应用。

推荐算法

协同过滤、基于内容的推荐、混合推荐算法等,用于个性化推荐,如电影、音乐、新闻等。

缓存算法

最近最少使用(LRU),最不经常使用(LFU)和随机替换(Random Replacement)等算法用于缓存管理,提高系统的性能和响应速度。

网络路由和流量控制算法

Dijkstra算法和A*算法用于网络路由的计算,而拥塞控制算法(如TCP/IP协议中的拥塞避免和控制算法)用于流量控制。

验证码算法

不同类型的验证码算法,如基于字符的验证码、图像识别验证码或逻辑问题验证码,用于防止自动化的垃圾邮件和网络攻击。

分布式系统算法

Paxos和Raft等一致性算法,用于分布式系统中的状态一致性和故障容错。

数据库查询优化算法

索引查询算法、查询执行计划生成算法,用于数据库性能优化。 上述算法只是互联网应用中常见算法的一部分,各个领域会根据具体需求和场景进行算法的选择、优化和实现。随着技术的发展和新算法的不断涌现,互联网应用中的算法也在不断进化。


数据结构与算法

参考文档

数据结构详细笔记

基础算法在线图示

尚硅谷数据结构与算法

LeetCode 案例分析

参考文档

LeetCode 官网

动态规划

动态规划之KMP字符匹配算法

动态规划之博弈问题

动态规划之四键键盘

动态规划之正则表达

动态规划设计之最长递增子序列

动态规划详解进阶

团灭股票问题

子序列问题模板

抢房子

最优子结构

最长公共子序列

编辑距离

背包问题

贪心算法之区间调度问题

高楼扔鸡蛋进阶

高楼扔鸡蛋问题

算法与思维

FloodFill算法详解及应用

twoSum问题的核心思想

UnionFind算法应用

UnionFind算法详解

为什么推荐算法4

二分查找详解

信封嵌套问题

几个反直觉的概率问题

前缀和技巧

区间交集问题

区间调度问题之区间合并

双指针技巧

回溯算法详解修订版

字符串乘法

学习数据结构和算法的高效方法

常用的位操作

洗牌算法

滑动窗口技巧

烧饼排序

算法学习之路

递归详解

高频面试案例

koko偷香蕉

k个一组反转链表

LRU算法

一行代码解决的智力题

二分查找判定子序列

判断回文链表

合法括号判定

如何去除有序数组的重复元素

子集排列组合

座位调度

打印素数

接雨水

最长回文子串

水塘抽样

消失的元素

缺失和重复的元素

工作中遇到的一些算法

工作中遇到的一些算法