自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 笔记强训 || NC313 两个数组的交集 || 哈希表/去重+排序+遍历查找+插入ret

想快速在一堆数字中找到某个数字是否存在的方法:哈希表。找数组A与数组B之间的共同值(不重复):将数组A设置为哈希表,数组A的数据为哈希表的角标,哈希表中角标是数组A数据的位置设置为true,其余为false。遍历数组B,数组B中的数据看做哈希表的角标,对应位置是true,则说明数组AB均有。牛客网上定义数组如果不初始化,则是随机值,并不是0。方法二利用:去重+排序+遍历查找+插入retpublic:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可。

2024-04-17 17:45:16 342 1

原创 笔试强训 | BC153 [NOIP2010]数字统计

易错点:将while与if两个关键字,“脑子不转”,将while写为if,使其持续做的事情只是进行了判断。拆分数据的方法:1234%10=4,1234/10=123。%10是取出数字的最后一位,/10是将数字删掉最后个位的数字,也就是数字缩小十倍。1%10=1(0*10+1=1):只有一位的数字%10就是他本身。1/10=0(0*10+1=1):只有一位的数字/10是0。

2024-04-17 16:40:36 269 1

原创 error:LNK2005 已经在*.obj中定义 的原因分析及对策

/如果没有定义这个宏//定义这个宏//...code...头文件主体内容endif我经常忽略的一个细节,举例说明:class Cubepublic:Cube();~Cube();m_a = a;m_a = b;m_a = c;int getV();//声明了getV().想要在外部单独定义private:int m_a;int m_b;int m_c;int m_v;return m_v;变量在使用前就要被定义或声明;

2024-04-09 11:31:45 1808 2

原创 C++ | vector模拟实现

【代码】C++ | vector模拟实现。

2024-04-06 20:36:43 452

原创 C++ | string模拟实现

【代码】C++ | string模拟实现。

2024-04-04 18:08:11 314

原创 C++ | string类学习 | string的常见接口使用方式

string字符串是表示字符序列的类;标准的字符串类提供了帮助对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性;string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型);string类是basic_string的模板类的一个实例,它使用char来实例化basic_string模板类,并使用char_traits和allocator作为basic_string的默认参数;

2024-04-04 17:35:42 785

原创 自定义类型(结构体、枚举、联合体)内存大小的计算方法

总体来说,结构体的内存对齐是那空间换取时间的做法。

2024-03-03 12:05:35 895

原创 常用字符函数和字符串函数的了解和模拟实现

字符函数和字符串函数都是在编程中用来处理字符和字符串的函数。字符函数是用来处理单个字符的函数,比如查找、替换、转换大小写、比较等操作。常用的字符函数包括:isalpha()isdigit()islower()isspace()toupper()tolower()strchr()strstr()字符串函数是用来处理整个字符串的函数,比如查找、替换、连接、分割等操作。常用的字符串函数包括:strlen()strcpy()strcat()strcmp()strchr()strstr()strtok()

2024-02-29 18:38:09 909

原创 Linux | 进度条 | Linux简单小程序 | 超级简单 | 这一篇就够了

在学习了基本的Linux指令,Linux上vim编译器等等之后,我们就来学习写代码喽~在 Linux 上写下一个简易的进度条小程序。

2024-02-07 20:19:17 1301 11

原创 C++ || 模板初阶 | 函数模板 | 类模板

如果在C++中,也能够存在这样一个模具,通过给这个模具中填充不同材料(类型),来获得不同材料的铸件(即生成具体类型的代码),那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

2024-02-07 12:57:50 657 15

原创 C++ || C/C++内存管理 | C++动态内存管理方式 | operator new/delete函数 | new和delete实现原理 | 定位new表达式 | 内存泄漏

类名* 地址名 = new 类名[];调用operator new函数申请空间;在申请的空间上执行构造函数,完成对象的构造。内存泄漏,是指因为疏忽或者错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。

2024-02-05 21:00:56 1093 9

原创 C++ | 再谈构造函数 | Static成员 | 友元 | 内部类 | 匿名对象

初始化列表特性:每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次);类中包含以下成员,必须放在初始化列表位置进行初始化:引用成员变量(引用必须在定义的时候初始化)、const成员变量(定义之后就不能修改)、自定义类型成员(且该类没有默认构造函数);尽量使用初始化列表初始化,因为不管是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化;成员变量在类中声明次序就是其初始化列表中初始化顺序,与其在初始化列表中的先后次序无关;如果没有默认构造,编译器会编不过,所有的成员变

2024-02-05 12:38:09 949 7

原创 C++ || 类的八种函数 | 默认成员函数 | 构造函数 | 析构函数 | 拷贝构造函数 | 赋值运算符重载 | const成员函数 | 取地址及const取地址操作符重载

构造函数属于默认成员函数。如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数;如果显示定义,则编译器不自动生成;编译器自动生成的构造函数对内置类型不做处理,对自定义类型成员调用它的默认成员函数;默认构造函数可被认为有(以下三种只能出现一种):无参的构造函数、全缺省构造函数、编译器默认生成的构造函数。建议使用全缺省构造函数。声明和定义分开,全缺省构造函数中的缺省参数应该写在函数的声明部分,而定义部分不需要写

2024-02-01 08:15:01 1069 25

原创 Linux | makefile简单教程 | Makefile的工作原理

Makefile带来的好处就是——自动化编译。一旦写好,只需要一个make命令,整个工程就完成自动化编译,极大提高了软件开发的效率;make是一个命令工具,是一个解释Makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,visual C++的make,linux下GNU的make。可见,Makefile都成为了一种在工程方面的编译方法。make是一个命令,Makefile是一个文件,两个搭配使用,完成项目自动化构建。

2024-01-26 16:09:35 1448 24

原创 C++ | C++11中 基于范围的for循环 详细讲解

对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,计算机都应该知道一个数组的范围了,而自己还要告诉他,也就是很麻烦,有时候还容易犯错。对于类而言,应该提供begin和end的方法,begin和end就是for循环的迭代的范围。例如 : for(“数据类型”“变量名称”“ : ” “数组名称”)对于数组而言,就是数组中的第一个元素到最后一个元素的范围。因而C++11中引入了基于范围的for循环。

2024-01-24 21:18:01 543 1

原创 C++ | auto是什么意思?如何使用?详细讲解

在使用auto时,编译器只会堆第一个类型进行推导,然后用推导出来的类型定义其他变量。在同一行定义多个变量是,这些变量必须是相同的类型。auto “变量名称” = “赋值的内容”;

2024-01-24 21:12:35 795 1

原创 C++ | inline 内联函数是什么意思?【面试题】宏优缺点?详细讲解

Inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,(假如在调用一个指令很长的函数时,即使你使用了inline内联函数,但是如果这个函数超过了这个编译器的规定线时,编译器会忽略这个inline特性);Inline是以空间换时间;但是这里的空间注意并不是内存的空间,而是可执行程序的空间变大了;在编译阶段,会用函数体替换函数体替换函数调用。叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序的运行效率。

2024-01-24 21:02:23 480

原创 C++ | 引用是什么意思?引用与指针的不同点?详细讲解

语法概念上,引用就是一个别名,没有独立空间,和其他引用实体公用同一块空间;编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。底层实现上,引用实际是有空间的,因为引用是按照指针方式来实现的。例如:李逵,AKA“铁牛”“黑旋风”,都是同一个人。类型& 引用变量名(对象名)=引用实体。先初始化变量,再const引用 常量。

2024-01-24 20:55:55 701

原创 C++ | 函数重载是什么意思?【面试题】C++支持函数重载的原理是什么?详细讲解

一个词有多种含义,可以通过上下文来判断该词的真实含义,即该词被重载了。函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的(参数个数、类型、类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。注:函数重载时返回值的类型可以相同也可以不同。

2024-01-24 20:44:24 441

原创 C++ | 缺省参数什么?如何使用?详细讲解

​半缺省参数必须从右往左依次给出,不能间隔给;缺省参数不能在函数声明“.h”和函数定义“.cpp”中同时出现;不能跳跃传值;缺省参数必须是常量或者全局变量;C语言不支持。​

2024-01-24 20:34:34 446

原创 C++ | cout与cin << >> endl 是什么意思

旧编译器(vc 6.0)中还支持格式,后续编译器已不支持;早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应。后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间;因此推荐使用+std的方式。规定C++头文件不带.h;

2024-01-24 20:19:23 953

原创 C++ | 什么是命名空间?命名空间的详细讲解

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

2024-01-24 19:11:25 503

原创 【Web-Note】 JavaScript概述

head中定义JS函数head标记内定义两个JS函数无返回值函数:message()有返回值函数:sum(x,y)" value="计算并显示两个数的和">

2023-11-26 20:11:37 1893 6

原创 【JavaScript】alert的使用方法 | 超详细

alert()方法用于显示带有一条指定消息和一个确认的按钮的警告框。

2023-11-26 19:14:40 9632 1

原创 【数据结构】二叉树概念 | 满二叉树 | 完全二叉树

二叉树在实践中用的很多。一棵二叉树是结点的一个有限集合,该集合:或者为空一个根结点两棵左子树右子树二叉树最多两个孩子这里注意:二叉树并不是度为2的树。二叉树的度最大值是2,并不是说它的度一定为2。二叉树不存在度大于2的节点;二叉树的子树有左右之分次序是不能颠倒的,因此二叉树是有序树。二叉树通俗也可以理解为对树进行了“计划生育”。“计划生育”也就是生两个小孩,但是是每一家来说都是生两个吗?度为2一定是二叉树。所有节点的最大的度就是2。

2023-11-23 11:49:51 616 1

原创 【数据结构】树如何定义 | 如何存储 | 实际应用

如上图,A中的孩子的个数是不固定的。我们无法精确的每个不同的根结点有多少个孩子。所以并不能精确知道需要定义多少个孩子节点。

2023-11-23 11:34:08 264

原创 【数据结构】树的基本概念 | 入门树以及二叉树必熟知

​结点的度结点的度:一个节点含有的子树的个数称为该结点的度;如A节点的度为6,B节点的度为0。叶节点或终端结点叶节点或终端结点:度为0的节点称为叶节点;如上图P/Q/H/I/B/C...等都为叶节点。非终端节点或分支节点非终端节点或分支节点:度不为0的结点;如上图D/E/F/G/J都为非终端节点。双亲节点或父节点双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点。孩子节点或子节点孩子节点或子节点:一个节点含有子树的根结点则称为该结点

2023-11-23 11:20:09 89

原创 【数据结构】单链表 | 详细讲解

在链式结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址。数据域:存储数据元素信息的域称为数据域;指针域:存储直接后继位置的域称为指针域。在指针域中存储的信息称为指针或链。数据域与指针域信息组成数据元素的存储映像,称为结点。单链表:n个结点链结成的链表,此链表中的每个结点中只包含一个指针域。

2023-11-15 21:43:57 632 37

原创 【数据结构】顺序表 | 详细讲解

顺序表是用一段物理地址连续的存储单元依次存储数据元素的数据结构,一般情况下采用数组存储。在数组上完成数据的增删改查。顺序表一般可以分为:静态顺序表:使用定长数组存储元素。动态顺序表:使用动态开辟的数组存储。

2023-11-11 18:26:31 989 33

原创 【LeetCode笔试题】27.移除元素

【LeetCode笔试题】27.移除元素给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

2023-11-11 12:15:04 182 1

原创 【LeetCode笔试题】88.合并两个有序数组

给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。

2023-11-11 10:57:59 149

原创 【LeetCode笔试题】26.删除有序数组中的重复项

给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数组nums,使nums的前k个元素包含唯一元素,并按照它们最初在nums中出现的顺序排列。nums的其余元素与nums的大小不重要。返回k。示例:输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums

2023-11-11 08:58:03 322 1

原创 【Web】在前端中,HTML<meta>标签

目前所有的主流浏览器基本都支持标签。标签提供了HTML文档的元数据。元数据不会显示在客户端,但是会被浏览器解析。也就是说,这个meta是给浏览器用的,但是用户可以借助程序员在meta设置的信息来检索到这个网页。META通常是用于指定网页的描述,关键词,文件的最后修改时间,作者及其其他元数据。元数据可以被使用浏览器(如何显示内容或者重新加载页面) ,搜索引擎(关键词),或其他Web服务调用。

2023-11-06 21:08:14 1166

原创 【Web】在前端中CSS的语法

CSS规则是由两个主要的部分构成:选择器、以及一条或多条声明。选择器通常是需要改变的HTML元素。每条声明由一个属性和一个值组成。属性(Property)是需要设置的样式属性(Style attribute)。每一个属性有一个值。且属性与值被冒号分开。CSS声明总是以分号;结束,声明总是以大括号 { } 括起来。

2023-11-06 15:08:27 325

原创 为什么数组的下标是从0开始呢?

我们在许多的编程语言中,大部分的数组下标都是从零开始的,那为什么不是从一开始的呢?下标从0开始的原因就是为了寻址方便。对比两个代码,会发现下标从1开始时,每次随机根据下标访问数组元素时,对于CPU来说,会多一个减法运算。数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。所以为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。

2023-10-29 12:56:52 1323 4

原创 【Note详细图解】中缀表达式如何转为后缀表达式?数据结构

中缀转后缀思路初始化两个栈:运算符栈S1;操作数栈S2从左向右扫描中缀表达式遇到操作数时,将其压入到操作数栈S2遇到运算符时,比较其与运算符栈S1栈顶运算符的优先级如果运算符栈S1为空,或栈顶运算符为左括号“ ( ”,或者优先级比栈顶运算符的优先级较高,则直接将此运算符压入栈中否则,将运算符栈S1中栈顶的运算符弹入并压到操作数栈S2中,再次进行与运算符栈S1栈顶运算符的优先级比较遇到括号时,如果遇到了左括号“ (”,则直接压入运算符栈S1;如果遇到右括号“ ) ”,则依次弹出运算符栈S1栈

2023-10-27 18:09:22 2644 1

原创 【Note】二叉树的遍历

基本思路:先序遍历的第一个结点一定是二叉树的根结点,而根据中序遍历规则,这个结点将同一棵二叉树的中序遍历序列分成了左、右两部分,左边部分是二叉树的根结点的左子树的中序遍历序列,右边部分是二叉树的根结点的右子树的中序遍历序列。根据这两个子序列,在先序序列中找到对应的子序列,左子序列的第一个结点为左子树的根结点,右子序列的第一个结点为右子树的根结点。对左右子树,在反复利用这个方法,最终根据先序序列和中序序列能唯一地确定出一棵二叉树。

2023-10-25 21:23:00 165 3

原创 【Note】链式存储结构

一个二叉链表由根指针root唯一确定。若二叉树为空,则 root=NULL;若结点的某个孩子不存在,则相应的指针为空。具有n个结点的二叉链表中,共有2n个指针域。其中只有n-1个用来只是结点的左、右孩子,其余的n+1个指针域为空。

2023-10-25 16:19:41 104

原创 【Note】一般二叉树的顺序存储

一般二叉树的顺序存储

2023-10-25 15:37:53 65

原创 【Note】完全二叉树的类型定义

完全二叉树:深度为k,结点数为n的二叉树,如果其结点1~n的位置序号分别与等高的满二叉树的结点1~n的位置序列一一对应,则为完全二叉树。

2023-10-25 15:19:40 141

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除