
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
一.堆的相关概念什么是堆?堆本质上是一种完全二叉树,它分为两个类型:1.大根堆。2.小根堆。什么是大根堆?什么是小根堆?性质:每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆。如下图:...
对应letecode链接:https://leetcode-cn.com/problems/sort-list/题目描述:给你链表的头结点head,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]
1.单调栈的基本概念:相信大家对栈都非常的熟悉?栈有一个非常鲜明的特点:先进后出而所谓单调栈则是在栈的先进后出基础之上额外添加一个特性:从栈顶到栈底的元素是严格递增(or递减)。1.对于单调递增栈,若当前进栈元素为 x,从栈顶开始遍历元素,把大于等于x的元素弹出栈,直接遇到一个小于x的元素或者栈为空为止,然x压入栈中。2.对于单调递减栈,则每次弹出的是小于x的元素。以单调递增为例:以序列:3,2,
目录1.LRU2.LFU1.LRU什么是LRU?LRU就是一种缓存淘汰策略。计算机的缓存容量有限,如果缓存满了就要删除一些内容,给新内容腾位置。但问题是,删除哪些内容呢?我们肯定希望删掉哪些没什么用的缓存,而把有用的数据继续留在缓存里,方便之后继续使用。那么,什么样的数据,我们判定为「有用的」的数据呢?LRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,
morris遍历使用二叉树节点中大量指向null的指针,由Joseph Morris 于1979年发明。时间复杂度:O(n)额外空间复杂度:O(1)在你阅读以下代码之前,在这边先讲解一下Morris的通用解法过程。在详细了解morris遍历之前我们先了解一下m orris遍历的基本流程是什么:当前节点cur一开始来到整颗树的头1.如果cur没有左树则cur=cur->right;即cur向右
typedef是c语言中一个重要的关键字其作用是为一种数据类型定义了一个新的名字这里的类型包括(int,char,double 等)和自定义数据类型,通俗一点来说就是为一种数据类型起一个别名举个例子:定义一个整型变量a并将其初始化为666,在将a的值输出#include<stdio.h>int main(){int a = 666;printf("%d", a);return 0;}如
目录1.跳表的相关概念2.跳表节点的定义及其实现2.1跳表的插入2.2跳表的删除3.letecode测试及其链接1.跳表的相关概念跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右边的示意图)。一开始时,算法在最稀疏的层次进行搜索,直至需
一.统一的列表初始化统一列表初始化的使用在C++98中,标准允许使用花括号{}对数组元素进行统一的列表初始值设定。比如:int array1[] = {1,2,3,4,5};int array2[5] = {0};而对应一些自定义类型却不行比如说:vector<int> v{1,2,3,4,5};在c++98中是无法编译成功的,我们只能够定义vector对应之后通过循环进行插入元素达到
远程过程调用协议,目标就是让远程服务调用更加简单、透明。RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程的服务提供的接口,而不需要关心底层通信细节和调用过程。其大致过程如上图所示。

1.由前序遍历和中序遍历还原二叉树对应letecode链接:105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode) (leetcode-cn.com)题目描述:给定一棵树的前序遍历preorder 与中序遍历inorder。请构造二叉树并返回其根节点。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Outpu







