什么是并查集 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(Union-find Alg...
什么是并查集 在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(Union-find Alg...
什么是滑动窗口(Sliding Window) The Sliding Problem contains a sliding window which is a sub – ...
题目说明 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝...
如何理解分治算法 分治算法(divide and conquer)的核心思想就四个字:分而治之,就是将原问题划分成 n 个规模较小,并且结构与原问题相似的子问题,递归地解决这...
什么是贪心算法 贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或...
什么是回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 “回溯” 返回,尝试别的路径。 回溯法是一种选优搜...
前言 上一节通过两个经理案例初步认识动态规划,今天这一节主要讲动态规划的理论知识。 “一个模型三个特征”理论讲解 实际上,动态规划作为一个非常成熟的算法思想,这部分理论总结为...
前言 今天开始学习动态规划,一共有三节,分别是:初识动态规划、动态规划理论、动态规划实战。今天这一节就是初识动态规划。 动态规划比较适合用来求解最优问题,比如最大值、最小值等...
什么是搜索算法 上一节介绍了图的基本概念,这一节介绍图的搜索算法。 图的搜索算法,最直观的理解就是从一个顶点到另一个顶点的路径。 最简单的是广度优先搜索和深度优先搜索,这也是...
基本概念 图是一种非线性的数据结构,相比树来说,更加复杂。 图的元素叫顶点,树的元素叫节点。 度:顶点相连的边的条数叫度。 图的分类有无向图、有向图、带权图 无向图 边没有方...
上一节我们学习了堆和堆排序的一些理论知识(点击查看),今天我们就来讲一讲,堆这种数据结构的几个非常重要的应用。 应用一:优先级队列 优先队队列,是一个按优先级进出的特殊队列,...
今天我们来学习堆和堆排序。 什么是堆 堆是一种特殊的树,满足以下两点要求: 堆是一个完全二叉树。 堆中每个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。 通过要求...
前言 在排序那一节里,讲到排序时,利用递推公式推导时间复杂度来求解归并排序、快速排序的时间复杂度,但有些情况,例如快速排序的平均时间复杂度,利用递推公式,会涉及很复杂的数据推...
前言 二叉查找树是最常用的一种二叉树,它支持快速查找、插入、删除操作。性能与树的高度成正比,理想情况下,时间复杂为是O(logn)。 不过频繁的更新,二叉树的高度会远大于lo...
二叉查找树 二叉查找树是二叉树中最常用的一种类型,也叫二叉搜索树。 二叉查找树要求,在树中的任意一个节点,其左子的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这...
概念 树:是一种数据结构,像一颗倒挂的树。树的每个元素叫作“节点”;用来连续相邻节点之间的关系,叫作“父子关系”。 关于高度(Height)、深度(Depth)、层(Leve...
前言 上一节我们讲了哈希算法的四个应用,分别是安全加密、数据校验、唯一标识、散列函数。今天再来看看剩下的三个应用:负载均衡、数据分片、分布式存储。 可能大家已经发现了,这三个...
什么是哈希算法 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法。而通过原始数据映射之后得到的二进制值串就是哈希值。 一个优秀的哈希算法要满足几点...
有两种数据结构(散列表和链表)经常会被放在一起使用。前面的章节中有两个地方讲到散列表和链表的组合使用,分别是: 04——链表 13——跳表 另外,Java中有一个容器Link...