Go语言实现LeetCode算法与数据结构练习总结

需积分: 9 0 下载量 115 浏览量 更新于2024-12-23 收藏 1.2MB ZIP 举报
资源摘要信息: "这份文件似乎是关于LeetCode练习的总结,涉及到了算法和数据结构的不同主题,并且特别标注了使用Go语言进行实现。文件标题中的“去”可能意味着对LeetCode中某一模块或题目的去重或者去除练习。文件内容覆盖了算法思想和数据结构两个方面,以下是详细的知识点梳理。" 算法思想: 1. 二分查找:一种在有序数组中查找特定元素的高效算法,基本思想是将待查找区间分成两部分,排除掉一部分后继续在剩下的一半中查找。 2. 贪心思想:在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。 3. 双指针:使用两个指针遍历数据结构(如数组或链表),通常用于处理有序数据或解决某些特定问题。 4. 排序:将元素按特定规则进行排列的过程,如快速排序、归并排序、冒泡排序等。 5. 快速选择:在未完全排序的序列中找到第k小的数,基于快速排序中的分区思想。 6. 堆排序:利用堆这种数据结构进行排序,适用于求解前n大的数等类似问题。 7. 桶排序:将数组分到有限数量的桶里,每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。 8. 搜寻:包括广度优先搜索(BFS)、深度优先搜索(DFS)和回溯算法,用于解决迷宫、图遍历等问题。 9. 分治:将复杂问题分解成简单子问题,分别解决后合并结果的算法设计方法。 10. 动态规划:通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 11. 分割整体:可能涉及到将一个复杂问题分割成小的、可管理的部分来解决。 12. 矩阵路径:通常与二维数组或者矩阵的路径问题相关,如不同路径数目计算。 13. 斐波那契数列:一个每一项都是前两项之和的数列,常见于各种动态规划问题。 14. 最长递增子序列:在一组数中找出长度最长且递增的子序列。 15. 最长公共子序列:两个字符串序列最长的子序列的长度,不一定是连续的。 16. 0-1背包:一种组合优化问题,要从给定的物品中选取总价值最大但不超过背包容量的部分物品。 17. 斑点区间:可能指区间覆盖或者区间选点等问题。 18. 双向编辑:双向字符串匹配算法,如编辑距离问题。 19. 数学:涵盖了算法中应用的数学知识,包括素数、最大公约数、二进制转换、阶乘等。 20. 字符串加法减法:字符串操作中对字符进行加减操作的算法。 21. 相遇问题:算法中解决两个或多个对象相遇或碰撞的问题。 22. 多数投票问题:与投票算法或者多数元素问题相关。 数据结构相关: 1. 栈和队列:后进先出(LIFO)的数据结构和先进先出(FIFO)的数据结构。 2. 哈希表:根据键值对存储数据,能够快速检索出已存储的数据。 3. 弦乐:可能指的是弦树,一种可以快速找到字符串中所有重复子串的数据结构。 4. 斑点与矩阵:可能涉及特定条件下的矩阵操作和数据存储。 5. 1-n分布:可能是指某种分布统计的数据结构实现。 6. 有序矩阵:矩阵数据结构中元素有序排列的情况。 7. 链表:一种通过指针将一系列节点串联成线性表的数据结构。 8. 树:包括二叉树、平衡树、B树等不同类型的树结构,用于快速查找、插入和删除操作。 9. 递归:函数直接或间接调用自身的方法。 10. 层次遍历:树或者图按层次从上到下逐层访问节点。 11. 前中后序遍历:二叉树遍历的三种主要方式。 12. BST:二叉搜索树(Binary Search Tree),一种特殊的二叉树,用于高效查找、插入和删除操作。 13. 特里:此条目可能是文件错误,无法判断具体含义。 14. 图:由顶点的有穷非空集合和顶点之间边的集合组成的数据结构。 15. 位运算:计算机中对整数在内存中按位进行的各种运算。
2021-03-31 上传
2021-03-17 上传