暂时未有相关云产品技术能力~
大一本科在读,热爱编程, 热爱敲代码,对新知识有强烈的渴望。
一、1.树是什么? 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
一、二叉树的概念及结构 1.概念 一棵二叉树是结点的一个有限集合,该集合: 或者为空 由一个根节点加上两棵别称为左子树和右子树的二叉树组成
一、力扣题之排序循环链表 题目如下:航班直达!! 二、解题思路 刚看到直到题我还是很迷的,没有写过类似的题目。 当我看到官方题解时,嘿嘿嘿三个字形容此时的心情。 首先需要知道,这道题是升序的,但是当我们找到最大节点时,最大节点的next是最小节点,这是循环链表的缘故
一、什么是哈夫曼树 当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。 二、哈夫曼树相关概念 1.路径 在一棵树中,一个结点到另一个结点之间的通路,称为路径。
插入排序概念 直接插入排序是从一个有序的序列中选择一个合适的位置进行插入,这个合适的位置取决于是要升序排序还是降序排序。 每一次进行排序之后,这段数据都是有序的。
一、堆的定义 堆的本质是一个数组,但是这个数组被看作成一棵完全二叉树。 堆分为两种,大根堆和小根堆 1.大根堆 大根堆是每一个节点的值都大于它左右孩子节点的值。 如下图所示,这就是一个大根堆:每个父亲都大于它的孩子。
一、TopK问题是什么 TopK问题就是从1000个数中找出前K个最大的数或者最小的数这样的类似问题。 不过并不要求这k个数字必须是有序的,如果题目有要求,则进行堆排序即可。 还有比如求出全国玩韩信前十名等等,排出班级前十名也是TopK问题。
一、单值二叉树 前序遍历的思想。 思路:先判断左右节点是否存在,再判断根分别和左右节点的值是 否相等。 1.如果左子节点存在,但是值不等于根节点的值,返回false 2.如果右子节点存在,但是值不等于根节点的值,返回false 如果相等,递归其左子节点和右子节点。
一、选择排序 直接选择排序通过每一轮的比较,找到最大值和最小值,将最大值的节点跟右边交换,最小值节点跟左边交换,达到排升序的效果。
一、归并排序是什么? 归并排序是将一段区间分成若干个子问题,子问题再次分成子问题,这个是分治过程;最后分成的子问题只存在一个数时,就可以开始合并,合并的过程就是比较两个子问题的过程,合并完成后将合并的新数据拷贝到原数据即可。
一 .直接插入排序 直接插入排序是从一段数据中将一个数据在合适的位置插入。
一、C++中的关键字 二、命名空间 命名空间是对于全局变量来说,我们在定义变量或函数时,函数名可能会和库中的函数名产生冲突。 比如:一、C++中的关键字
一、缺省参数 1.缺省参数定义 缺省参数是在函数的声明中给定参数一个指定的值。 如果传参没有给定参数,那就按照声明中默认的缺省值,如果给定了参数,那就按照给定的参数值。 比如:
一、什么是内联函数 用关键字inline修饰的函数叫做内联函数。 C++编译器编译时会自动在被调用的地方展开。 二、内联函数的优缺点 内联函数的优点: 没有函数栈帧创建,提升程序运行效率。简单,不易出错,可读性强,可被调试。 内联函数集合了宏函数的优点,摒弃了宏的缺点, 宏的缺点:复杂,容易出错,可读性差。 内联函数的缺点: 如果一个函数的代码量过大,并且频繁被调用,那么在调用的地方展开会极大增加代码量,且代码重复。
1.auto作用 auto关键字能够自动识别变量类型。 2. auto的原理 auto定义的变量会在编译阶段根据右值来推出auto变量的类型。 1.使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。 2.因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。 3.使用auto的细则 3.1. auto与指针和引用结合起来使用
Linux是一个操作系统,操作系统是一款做软硬件管理的软件。 一、Linux操作的特点 Linux操作的特点:纯命令行的操作。 指令的操作更贴近操作系统。 后面我们会知道,Linux下一切皆文件。 二、使用指令从Xhell登录云服务器 使用Xhell这个软件登录到云服务器来学习Linux。
建立连接三板斧: add , commit ,push Linux与git远程连接的方法: 1.设置全局的用户名和邮箱 git config – global user.name “你的用户名” git config – global user.email “你的邮箱”
👑 前言 本文从0开始详解什么是类,什么是对象等问题。 先讲讲什么是面向对象和面向面向过程编程。 面向过程:关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 面向对象:关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 举一个简单例子:在日常洗衣服中,面向过程的思想是:每一步都精分细作,逐步解决问题。
前言 本文继类和对象上,开始讲述默认成员函数。 默认成员函数是:我们不具体写,编译器会自动生成的函数叫默认成员函数。 一、🌺构造函数(重点🌺) 构造函数是类的一个默认成员函数,它虽然叫构造函数,但它的作用并不是构造一个对象,而是初始化一个对象。 它与Init函数不同, 每次实例化一个新的对象都要调用 Init函数来完成对象的初始化,比较麻烦,而这个构造函数,可以解决这个问题。
Tip 关于内联函数:在类内定义的函数,如果代码量少的话,编译器会酌将其转换成内联函数,这样会在调用的地方直接展开,能够提高效率。 在这个日期类中,提高的效率不是很大,所以在本文将日期类的成员函数的声明和定义分离了。如果想写成内联,需要直接在类里面定义。(内联的声明和定义不能分离)
🍕前言 本文章继自类和对象(中),完成收尾工作。 一、🍕再谈构造函数 1.1构造函数体赋值 在学习过的类和对象的基础知识中,构造函数内部通常是给成员变量一个初始值。虽然调用完构造函数后,变量有了初始值,但是不能称其为对对象的初始化,只能称其为对变量的赋值。 因为初始化只能初始化一次,而赋值可以多次赋值。 所以下面给出一个真正的初始化操作:初始化列表。
前言 tips: 关于前两篇文章所提到的sudo指令 我们知道,sudo指令后面紧跟的一条指令,该条指令是以root身份执行的对于有一些我们普通用户无法执行的指令,就需要用到该指令进行提权。
Tips: *号匹配。 功能:可以匹配任何东西。 比如: 可以看到,*号可以匹配任何东西, 2.ctrl + c指令:终止因为程序或者指令异常,而导致我们无法进行指令输入。 3.Linux下一切皆文件 对于显示器来说,显示器文件有写方法(fwrite),有读方法(fread),但是读方法为空。 对于键盘文件来说,键盘文件有读方法(fread),有写方法(fwrite),但是写方法为空。 对于普通文件,则也都有正常的读写方法。
13.head指令 head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中而 tail 想当然尔就是看档案的结尾。
1.Linux下用户的分类 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
关于Linux的软件生态 关于Linux的软件生态问题,先知道几个点: 在我们的手机中,我们一般下载软件是去应用商店下载的。 而应用商店本身也是一个app,应用商店里面有各种各样的软件,然而,这些软件并不是在我们的手机本地,而是在远端的服务器上,远端服务器只是拉取一个软件列表在应用商店上面,如果想要下载某一款app,还需要通过网络去到远端服务器找到对应的软件,将该软件资源下载到本地手机才算下载。
1.什么是函数模板? 函数模板简单来说就是一个模板,与函数参数的类型无关,是一个模子,不是真正的函数,实例化的函数会根据实参的类型自动推导类型。