
基础技术
文章平均质量分 95
基础技术学习,分成两个部分:系统和编程:
编程部分:编程语言、编程范式、算法和数据结构。
系统部分:计算机系统原理、操作系统原理和基础、网络基础、数据库原理、分布式技术架构。
chentian114
这个作者很懒,什么都没留下…
展开
-
数据结构之2-3树和红黑树剖析
数据结构之2-3树和红黑树剖析文章目录数据结构之2-3树和红黑树剖析概述2-3树2-3树与红黑树的等价性红黑树红黑树添加新元素实现相关链接公众号参考概述红黑树(英语:Red–black tree)是一种自平衡二叉查找树,它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文。红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。《算法导论》中的红黑树:1.每个节点原创 2021-03-27 15:03:15 · 397 阅读 · 0 评论 -
数据结构之平衡二叉树剖析
数据结构之平衡二叉树剖析文章目录数据结构之平衡二叉树剖析概述原理时间复杂度分析实现实现平衡二叉树使用平衡二叉树实现映射和集合Leetcode 349.Intersection of Two Arrays 两个数组的交集Leetcode 350.Intersection of Two Arrays II 两个数组的交集相关链接公众号参考概述普通的二叉搜索树有可能因为数据样本的情况,退化成一个链表,使得二叉查找树的性能下降,于是便有了相应的自平衡二叉查找树来解决二叉查找树因为数据样本情况退化成一个链表原创 2021-03-18 14:48:09 · 232 阅读 · 0 评论 -
数据结构之并查集 Union Find 剖析
数据结构之并查集 Union Find 剖析文章目录数据结构之并查集 Union Find 剖析概述原理时间复杂度分析实现实现Quick Find并查集实现Quick Union并查集考虑size优化并查集基于rank优化并查集路径压缩优化并查集Leetcode 547. Friend Circles相关链接公众号参考概述并查集(英文:Disjoint-set data structure,直译为不交集数据结构):是一种数据结构,用于处理一些不交集(Disjoint sets,一系列没有重复元素原创 2021-03-15 17:28:06 · 606 阅读 · 0 评论 -
数据结构之字典树Trie剖析
本文主要介绍了字典树及其常见应用场景,重点讲解了其实现原理和时间复杂度分析,并结合具体的案例进行实践。原创 2021-03-15 06:09:04 · 274 阅读 · 0 评论 -
数据结构之线段树剖析
数据结构之线段树剖析文章目录数据结构之线段树剖析为什么要使用线段树概述原理时间复杂度分析实现使用数组实现线段树使用二叉树实现线段树线段树区间修改使用Lazy优化Leetcode 303. Range Sum Query - Immutable 区域和检索 - 数组不可变Leetcode 307. Range Sum Query - Mutable相关链接公众号参考为什么要使用线段树对于有一类问题,我们关心的是线段(或者区间):最经典的线段树问题:区间染色:描述:有一面墙,长度为n,每次选择一原创 2021-03-15 06:05:11 · 471 阅读 · 0 评论 -
数据结构之堆和优先队列剖析
数据结构之堆和优先队列剖析文章目录数据结构之堆和优先队列剖析概述原理时间复杂度分析堆相关的更多话题:实现基于数组实现最大堆基于数组实现最小堆使用堆实现优先队列LeetCode 347. Top K Frequent Elements 前K个高频元素牛客网-CD80-随时找到数据流的中位数相关链接公众号参考概述在计算机的世界里,很多的应用场景只需要取得当前数据集中最大或者最小的元素,而对于数据集中其它数据,并不需要他们一定是有序的。那么,我们如何高效快速地取得当前数据集中最大或者最小的元素呢?此时,新原创 2021-03-08 11:18:50 · 526 阅读 · 1 评论 -
数据结构之二叉搜索树剖析
讲述了 树 这种动态数据结构主要用来存储具有树状结构性质的数据集合,数据集合使用树结构存储后,使用起来出奇的高效;简述了二叉树以及二叉搜索树,详细剖析了二叉搜索树常用方法的核心原理及前序、中序、后序遍历的递归实现和非递归实现;时间复杂度分析;用二叉搜索树实现集合和映射这两种数据结构;最后是 Leetcode 上的相关的实践练习。原创 2021-03-05 22:07:16 · 410 阅读 · 0 评论 -
数据结构之链表剖析
数据结构之链表剖析文章目录数据结构之链表剖析概述原理单链表时间复杂度分析数组 VS 链表更多链表问题实践相关链接公众号参考概述链表是一种线性数据结构,其中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表有两种类型:单链表和双链表单链表双链表线性数据结构中动态数组、栈(数组实现)、队列(数组实现),底层依托静态数组,靠resize()解决固定容量问题;链表是真正的动态数据结构;原理//链表中数据存储节点(Node) 结构//单链表clas原创 2021-02-23 13:42:06 · 155 阅读 · 0 评论 -
数据结构之栈和队列剖析
数据结构之栈和队列剖析文章目录数据结构之栈和队列剖析概述栈原理时间复杂度分析队列原理时间复杂度分析实践Leetcode 20. Valid Parentheses 匹配括号Leetcode 102. Binary Tree Level Order Traversal 二叉树层序遍历牛客网-在线编程-程序员代码面试指南-CD5-设计getMin功能的栈牛客网-在线编程-程序员代码面试指南-CD100-猫狗队列如何仅用队列结构实现栈结构如何仅用栈结构实现队列结构相关链接公众号参考概述在 数组 中,可以通过原创 2021-02-21 11:07:42 · 185 阅读 · 0 评论 -
数据结构之数组及动态数组剖析
数组github地址把元素码成一排进行存放,利用索引访问。数组最大的优点:快速查询,利用索引查询,时间复杂度为:O(1);时间复杂度分析原理编写自己的数组类时间复杂度分析常见算法时间复杂度有O(1),O(n),O(logn),O(nlogn),O(n^2)大O描述的是算法的运行时间和输入数据之间的关系。忽略常数、不要低价项,只要高阶项;再根据具体数据样本分析;动态数组的时间复杂度添加操作 O(n)addLast(e) O(1)addFirst(e) O(n)add(i原创 2020-05-12 07:08:10 · 887 阅读 · 0 评论 -
常用排序算法原理及实践
排序冒泡排序选择排序插入排序归并排序快速排序练习:小和问题、荷兰国旗问题、找中位数排序算法时间复杂度空间复杂度算法稳定性冒泡排序O(n^2)O(1)稳定选择排序O(n^2)O(1)不稳定插入排序O(n^2)O(1)稳定归并排序O(nlogn)O(n)稳定快速排序O(nlogn)O(logn)不稳定稳定性分析如果待排序的序列中存在两个或两个以上具有相同关键词的数据,排序后这些数据的相对次序保持不变,即它们的原创 2020-11-28 16:56:10 · 391 阅读 · 0 评论 -
算法基础-时间复杂度、对数器、Master定理剖析
算法基础文章目录算法基础算法的复杂度认识时间复杂度对数器Master定理相关链接公众号参考算法的复杂度算法复杂度(算法复杂性)是用来衡量算法运行所需要的计算机资源(时间、空间)的量。通常我们利用渐进性态来描述算法的复杂度。用n表示问题的规模,T(n)表示某个给定算法的复杂度。所谓渐进性态就是令n→∞时,T(n)中增长最快的那部分。比如:T(n) = 2 * n ^ 2 + n log n + 3,那么显然它的渐进性态是 2 * n ^ 2,因为当n→∞时,后两项的增长速度要慢的多,可以忽略掉。在原创 2021-02-25 06:08:13 · 804 阅读 · 0 评论