240 发简信
IP属地:云南
  • 120
    环形链表的入口

    链表是否有环可用使用快慢指针进行判断,快慢指针相遇则存在环。在此基础上需要查找环的入口则需分析环形节点之间的关系。使用set记录节点这种方式这里不讲很容易理解。 设 A 为...

  • 理解B+树,就能真正记住MySQL索引优化规则

    B+树是一种多路搜索树,相较于B树有以下特性:节点分为内部节点、叶子节点、根节点(根节点在某些情况下也属于内部节点、叶子节点)。每个节点最多包含m-1个关键字、m个子节点。内...

  • 设计原则

    开闭原则 程序应该对修改关闭,对拓展开放。例如中文是姓在前名在后,英文则反之。下面的例子在不修改原有XiaoMing类时拓展了其功能。 依赖倒置原则 高层模块不应该依赖低层模...

  • LeetCode135 分发糖果

    可以使用贪心算法解决该问题 思路很简单定义两个数组 Left 和 RightLeft 数组 从前向后 遍历使其满足条件Right数组 从后向前 遍历使其满足条件然后取left...

  • 广度优先

    LeetCode 103 二叉树的锯齿形层序遍历

  • 120

    栈是一种操作受限的线性表,限定只能在表尾部进行插入和删除操作。最大特点是 后进先出(LIFO)表尾这一端被称之为栈顶,另一端叫栈底。将一个新元素插入到栈中叫做 进栈 入栈或压...

  • 120
    链表

    链表通过指针将一组零散的内存空间串联起来使用。单链表 双向链表 循环链表 链表的特点 每一个内存块称之为节点为了将所有节点联系起来 每个节点不仅要记录数据还要记录下一个内存块...

  • 数组

    数组Array 是一个线性表数据结构,它用一组连续的内存空间来存储相同类型的元素。上述就是数组最重要的定义,理解这句话基本就理解了数组。下面详述其特点 线性表 线性表中的数据...

  • 二分查找(变体)

    今天写4种二分查找的变体分别是查找第一个值等于给定值的元素查找最后一个值等于给定值的元素查找第一个值大于等于给定值的元素查找最后一个值小于等于给定值的元素虽说是是4种,但是原...

  • 基础二分查找

    先上代码 时间复杂度: log(n)二分查找只能作用在有序数组中 核心思想 取出数组最中间的数,与要查找的值做比较,会有如下3种情况。 中间数等于查找数 直接返回下标 中间数...

  • git 简单入门

    使用git前必须先按照git。 git官网点击进入 git 和 github的区别。 git是一个管理工具。 github 是一个代码仓管。 我们可以通过git管理代码,将代...

  • 堆排序

    废话不多说先上代码 时间复杂度 O(n * log n) 空间复杂度 O(1) 原地排序,注意我这里写的代码不是原地排序。 稳定排序 不是稳定排序,因为弹出堆顶元素要和最后一...

  • 120
    桶排序&&计数排序&&基数排序

    今天把三种排序放到一起写,因为原理都差不多。 桶排序 桶排序的代码我没有写,讲下思想就可以了。 时间复杂度 O(n) 空间复杂度 O(n * m) n是多少个桶 m每个桶多...

  • 120
    归并排序

    废话不多说先上代码 时间复杂度 O(n * log n) 这个时间复杂度不会变化,无论是完全逆序还是已经有序 空间复杂度 O(n) 不是原地排序 稳定排序 是稳定排序 算法核...

  • 快速排序

    废话不多说先上代码 时间复杂度 O(n * log n) 空间复杂度 O(1) 原地排序 稳定排序 不是稳定排序 算法核心思想 快排利用的是分治的思想。要排序的数组下标为从 ...

  • 冒泡排序

    废话不多说先上代码 时间复杂度 O(n²) 空间复杂度 O(1) 原地排序 稳定排序 是稳定排序 算法核心思想 假设要排序的数组的下标为0 到 5。下面所有的数字都代表其下标...

  • 选择排序

    废话不多说先上代码 时间复杂度 O(n²) 空间复杂度 O(1) 原地排序 稳定排序 不是是稳定排序 算法核心思想 从带排序数组中选择一个最大的数移动到数组最末尾,再从剩下的...

  • 插入排序

    废话不多说先上代码 时间复杂度 O(n²) 空间复杂度 O(1) 原地排序 稳定排序 是稳定排序 算法核心思想 将待排序数组划分为两个区间,有序区间和无序区间。有序区间在前,...