2020暑期LeetCode自学计划:数据结构与算法入门

需积分: 8 0 下载量 68 浏览量 更新于2024-10-26 收藏 983KB ZIP 举报
知识点概述: 1. 数据结构与算法:算法是解决特定问题的一系列执行步骤,数据结构是数据的组织、管理和存储方式,二者是计算机科学和软件开发的基石。 - 欧几里得算法:用于求解两个非负整数a和b的最大公约数(GCD),是最古老和最著名的算法之一。 - 筛法求素数:一种找出一定范围内所有素数的高效算法,如埃拉托斯特尼筛法(Sieve of Eratosthenes)。 - 康托展开:一种排列组合数学中的公式,用于计算一个给定的排列的唯一编号。 - 逆康托展开:康托展开的逆运算,根据康托展开的值还原排列。 - 同余定理:描述了整数除法中余数的性质,是数论中的基础概念。 - 高次方求模:在密码学和计算机科学中,常常需要计算一个数的幂次方对另一个数取模的结果。 - 三角形面积(海伦公式):利用三角形三边长度计算其面积的公式。 - 三点顺序:判断三个点的相对位置关系,如顺时针、逆时针或者共线。 - 字符串常用函数:字符串处理是编程中的基础,包括长度获取、查找、替换等。 - KMP算法:一种高效的字符串匹配算法,由Knuth、Morris和Pratt提出,适用于模式字符串的查找。 2. 进阶算法: - 递归:一种通过函数自己调用自己来解决问题的方法。 - 贪心算法:每次选择当前状态下最优的选择,以期望达到全局最优解。 - 动态规划:一种将复杂问题分解为更小子问题并求解的方法,通常用于求解最优化问题。 - 最大子串和:寻找数组中和最大的连续子数组。 - 最长公共子序列:序列在两个序列中都出现但不一定要连续。 - 最长单调递增子序列:在一组数中找到一个最长的上升的子序列。 - 图论:研究图的数学理论和算法,图是点和线的集合。 - 二分图的最大匹配:在二分图中找到最大的匹配集合。 - 匈牙利算法:用于解决最大匹配问题的算法。 - 计算几何:用计算机算法处理几何问题。 - 判断点是否在线段上:几何中常用的位置判断问题。 - 判断线段相交、矩形包含点、圆与矩形关系等:用于解决几何中的各种关系问题。 - 判断点是否在多边形内:确定一个点是否位于多边形内部。 - 计算两个圆的公切线、求矩形的并的面积、求多边形面积、重心和凸包:涉及到计算几何中的高级概念和计算方法。 3. STL学习: - STL(Standard Template Library)是C++的模板库,用于提供常用的数据结构和算法。 - vector和list:vector是动态数组,list是双向链表,都是STL容器的组成部分,各有特点和使用场景。 参考网址和版权声明: 本自学资料提供了算法学习的指导和资源链接,包括牛客网、力扣网、中国大学MOOC、网易云课堂、哔哩哔哩和CSDN等,供学习者参考。所有资源的版权归原作者所有,使用时应遵守相关版权声明。 总结: 此自学资源为2020年夏季准备,旨在帮助自学者通过完成指定数量的题目来巩固数据结构与算法的知识。涵盖了算法理论和实践操作,从基础到高级,同时强调了字符串和图论等重要主题,并建议读者深入了解STL在C++中的应用。提供了一系列的学习网站链接,便于学习者获取更多实践机会和深入理解。