• 图论基础

    图的逻辑结构和具体实现一幅图是由节点和边构成的,逻辑结构如下: 什么叫「逻辑结构」?就是说为了方便研究,我们把图抽象成这个样子。 根据这个逻辑结构,我们可以认为每个节点的实现如下: 12345/* 图节点的逻辑结构 */class Vertex &...
  • 滑动窗口算法解题套路框架

    介绍 滑动窗口算法可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。(循环嵌套-> 单循环问题) 算法的大致逻辑12345678910111213int left = 0, right = 0;while (right < s....
  • BFS算法解题套路框架

    框架思想 DFS 的本质就是回溯算法 BFS的核心是队列 BFS 的核心思想应该不难理解的,就是把一些问题抽象成图,从一个点开始,向四周开始扩散。一般来说,我们写 BFS 算法都是用「队列」这种数据结构,每次将一个节点周围的所有节点加入队列。 ...
  • 回溯算法

    回溯框架知识其实回溯算法其实就是我们常说的 DFS 算法,本质上就是一种暴力穷举算法。 废话不多说,直接上回溯算法框架。解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就...
  • 动态规划

    动态规划框架思想首先,动态规划问题的一般形式就是求最值。 比如说让你求最长递增子序列呀,最小编辑距离呀等等。 核心问题是:求解动态规划的核心问题是穷举。 动态规划三大要素 存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」或者...
  • MySQL(LC算法)

    MySQL 知识图谱 Join 连接大全 175. Combine Two Tables12345678910Table: Person+-------------+---------+| Column Name | Type |+------...
  • 二分查找树(Binary Search Tree)

    一、BST 特性1、对于 BST 的每一个节点 node,左子树节点的值都比 node 的值要小,右子树节点的值都比 node 的值大。 2、对于 BST 的每一个节点 node,它的左侧子树和右侧子树都是 BST。 二叉搜索树并不算复杂,但我觉得它...
  • 二叉树

    一、二叉树的重要性举个例子,比如说我们的经典算法「快速排序」和「归并排序」,对于这两个算法,你有什么理解?如果你告诉我,快速排序就是个二叉树的前序遍历,归并排序就是个二叉树的后序遍历,那么我就知道你是个算法高手了。 为什么快速排序和归并排序能和二叉树...
  • Bubble Sort(冒泡排序)

    介绍 排序原理: 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。 数组的简单实现1234567891011121314...
  • Insertion Sort (插入排序)

    介绍插入排序(Insertion sort)是一种简单直观且稳定的排序算法。 插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确...