整理了数据结构与基础算法,以及一些经典的LeetCode算法
公网资料、笔记地址请访问这里
其他相关技术可以访问我的博客,主页地址请访问这里
- 访问入口:http://note.grft.top
(回到顶部)
数据结构是一种组织和存储数据的方式,它提供了对数据的操作和访问方法。
数组是一种线性数据结构,由相同类型的元素按顺序存储。可以通过索引来访问数组中的元素,具有常数时间复杂度的随机访问。
链表是由节点组成的线性数据结构,每个节点包含一个数据项和指向下一个节点的引用。链表可以是单链表、双链表或循环链表。
栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。常见的应用场景包括函数调用、表达式求值和撤销操作等。
队列是一种先进先出(FIFO)的数据结构,只允许在队尾插入元素,在队头删除元素。常见的应用场景包括任务调度、消息传递和缓冲区管理等。
树是一种非线性数据结构,由节点和边组成。树的每个节点可以有多个子节点,但每个节点只有一个父节点。常见的树结构包括二叉树、堆和平衡树等。
图是由节点和边组成的非线性数据结构,用于表示对象之间的关系。图可以是有向图或无向图,支持各种算法如最短路径、最小生成树和网络流等。
(回到顶部)
计算机算法是一系列定义明确的指令,用于解决某个问题或执行某项任务。算法在计算机科学与编程领域中非常关键,它们能够让计算机执行各种复杂的数据处理工作。一个好的算法能够高效地运用计算资源,比如处理器时间和内存空间,来快速且准确地得出结果。
算法的设计和分析主要关注算法的正确性和效率。效率通常涉及算法的时间复杂度(即算法所需时间)和空间复杂度(即算法所需内存空间)。时间和空间复杂度通常用大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等一致性算法,用于分布式系统中的状态一致性和故障容错。
索引查询算法、查询执行计划生成算法,用于数据库性能优化。 上述算法只是互联网应用中常见算法的一部分,各个领域会根据具体需求和场景进行算法的选择、优化和实现。随着技术的发展和新算法的不断涌现,互联网应用中的算法也在不断进化。
(回到顶部)
- 动态规划之KMP字符匹配算法
- 动态规划之博弈问题
- 动态规划之四键键盘
- 动态规划之正则表达
- 动态规划设计之最长递增子序列
- 动态规划详解进阶
- 团灭股票问题
- 子序列问题模板
- 抢房子
- 最优子结构
- 最长公共子序列
- 编辑距离
- 背包问题
- 贪心算法之区间调度问题
- 高楼扔鸡蛋进阶
- 高楼扔鸡蛋问题
- FloodFill算法详解及应用
- twoSum问题的核心思想
- UnionFind算法应用
- UnionFind算法详解
- 为什么推荐算法4
- 二分查找详解
- 信封嵌套问题
- 几个反直觉的概率问题
- 前缀和技巧
- 区间交集问题
- 区间调度问题之区间合并
- 双指针技巧
- 回溯算法详解修订版
- 字符串乘法
- 学习数据结构和算法的高效方法
- 常用的位操作
- 洗牌算法
- 滑动窗口技巧
- 烧饼排序
- 算法学习之路
- 递归详解
- koko偷香蕉
- k个一组反转链表
- LRU算法
- 一行代码解决的智力题
- 二分查找判定子序列
- 判断回文链表
- 合法括号判定
- 如何去除有序数组的重复元素
- 子集排列组合
- 座位调度
- 打印素数
- 接雨水
- 最长回文子串
- 水塘抽样
- 消失的元素
- 缺失和重复的元素
(回到顶部)
贡献是使开源社区成为一个如此令人惊叹的地方,以学习、激励和创造。您所做的任何贡献都将非常感谢。
如果您对使这个项目变得更好有建议,请 fork 该仓库并创建 pull request。您也可以打开一个带有“enhancement”标签的问题。不要忘记给这个项目点个星!再次感谢!
(返回顶部)
根据 MIT 许可证进行分发。更多信息请参见 LICENSE.txt。
(返回顶部)
关注我: 小昊子
博客地址: http://note.grft.top
项目链接: https://github.com/worst001/note_algorithm
(返回顶部)
因为仓库与文档的数量比较大,有些借鉴资料忘了在参考文档
部分提及原作者与原仓库,若有疏漏请告诉,我及时补上。
所有引用的原资料都确认是开源认证,若有侵权请告知。
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
https://github.com/rogertan30/Love-Leetcode
https://github.com/labuladong/fucking-algorithm
(返回顶部)