自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【STL】list

迭代器失效即迭代器所指向的节点的无效,即该节 点被删除了。因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代 器失效的,2. rbegin(end)与rend(begin)为反向迭代器,对迭代器执行++操作,迭代器向前移动。1. begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动。,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。

2024-04-10 19:40:37 638

原创 【STL】vector

1. capacity的代码在vs和g++下分别运行会发现,vs下capacity是按1.5倍增长的,g++是按2倍增长的。这个问题经常会考察,不要固化的认为,vector增容都是2倍,具体增长多少是根据具体的需求定义 的。vs是PJ版本STL,g++是SGI版本STL。2. reserve只负责开辟空间,如果确定知道需要用多少空间,reserve可以缓解vector增容的代价缺陷问 题。3. resize在开空间的同时还会进行初始化,影响size。

2024-04-10 19:25:20 362

原创 【C++】string类

注意:1. size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一 致,一般情况下基本都是用size()。2. clear()只是将string中有效字符清空,不改变底层空间大小。

2024-04-10 18:53:02 370

原创 【C++】继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2024-04-02 22:21:59 726

原创 【C++】模版

class 类模板名// 类内成员定义注意:类模板中函数放在类外进行定义时,需要加模板参数列表1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性。

2024-04-01 20:35:16 870

原创 【数据结构】排序算法

1.3 希尔排序( 缩小增量排序 )2、选择排序2.1 直接选择排序2.2 堆排序3、交换排序3.1冒泡排序3.2 快速排序1. hoare版本2.挖坑法3. 前后指针版本3.3 快速排序非递归4 、归并排序1.归并排序 2.归并排序非递归5 、非比较排序5.1计数排序6、总结

2024-04-01 16:34:53 779

原创 【数据结构】非线性结构---二叉树

一个节点含有的子树的个数称为该节点的度;如上图:A的为6:度为0的节点称为叶节点;如上图:B、C、H、I...等节点为叶节点非终端节点或分支节点:度不为0的节点;如上图:D、E、F、G...等节点为分支节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点:一个节点含有的子树的根节点称为该节点的子节点;如上图:B是A的孩子节点兄弟节点:具有相同父节点的节点互称为兄弟节点;如上图:B、C是兄弟节点树的度:一棵树中,最大的节点的度称为树的度;

2024-04-01 16:01:27 714

原创 【数据结构】常见线性结构

线性表 ( linear list ) 是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使 用的数据结构,... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。

2024-03-26 15:22:39 925

原创 【数据结构】复杂度计算

时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比例,。

2024-03-23 16:33:57 470

原创 【c++】内存管理

malloc:只分配内存,不初始化。calloc:分配并初始化内存为零。realloc:改变已分配内存的大小。int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;

2024-03-23 15:01:56 1114

原创 【c++】类和对象

/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::一般情况下,更期望采用第二种方式。深拷贝的类,一般都要自己写析构、拷贝构造、赋值。深拷贝的类,也需要实现移动构造和移动赋值。

2024-03-22 23:01:56 919

原创 【c++】c++入门基础

分离会导致链接错误。因为inline被展开,就没有函数地址 了,链接就会找不到。

2024-03-21 21:44:15 682

原创 【C语言】编译链接

define 机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为宏(macro)或定义 宏(define macro)。注意:用于对数值表达式进行求值的宏定义都应该用这种方式加上括号,避免在使用宏时由于参数中 的操作符或邻近操作符之间不可预料的相互作用。

2024-03-21 20:20:25 302

原创 【C语言】数据存储

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。

2024-03-21 17:22:05 324

原创 【C语言】自定义类型

位段的声明和结构是类似的,有两个不同:1.位段的成员必须是 int、unsigned int 或signed int。2.位段的成员名后边有一个冒号和一个数字。

2024-03-21 12:22:12 348

原创 【C语言】库函数的模拟实现

1、字符串已经'\0'作为结束标志,strlen函数返回的是在字符串中'\0'前面出现的字符个数(不包 含'\0')。2、参数指向的字符串必须要以 '\0' 结束。3、注意函数的返回值为size_t,是无符号的。1、源字符串必须以 '\0' 结束。2、会将源字符串中的 '\0' 拷贝到目标空间。3、目标空间必须足够大,以确保能存放源字符串。4、目标空间必须可变。标准规定:第一个字符串大于第二个字符串,则返回大于0的数字第一个字符串等于第二个字符串,则返回0。

2024-03-20 23:03:35 756

原创 【C语言】数组和指针

pfun1可以存放,pfun1先和*结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为void。本例中&arr 的类型是: int(*)[10] ,是一种数组指针类型 数组的地址+1,跳过整个数组的大小,所以 &arr+1 相对于 &arr 的差值是40。&数组名,数组名表示整个数组。sizeof(&a[0]+1):&a[0]+1是第二个元素的地址,是指针类型,指针在64位下是8个字节。sizeof(&a[0]):&a[0]是首元素的地址,指针类型,在64位下是8个字节;

2024-03-19 17:50:09 986

原创 笔试强训day19

当 s1[i-1] = s2[j-1]时,MCS[i][j] = MCS[i - 1][j - 1] + 1,这里使用一个额外的值。9. 设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造哈希表,哈希函数为H(key)=key MOD 13,哈希地址为1的链中有()个记录。算{19,14,23,1,68,20,84,27,55,11,10,79}中的值有多少个key MOD 13 = 1。队满:end2==(end1+1) mod (M-1)

2024-03-14 22:28:29 906

原创 笔试强训day18

",则不需匹配,自动跳过一个字符,如果通配符遇到"*",则可以匹配任意多个字符,包括0个,此时可以有三种选择,1,匹配0个,通配符向后移动一个字符,字符串不动。第n个月的兔子数量由两部分组成,一部分是上个月的兔子f(n-1),另一部是满足3个月大的兔子,会生一只兔子f(n-2)。构造B时,先调用父类的test(),由于父类A已经构造完成,这时多态就会发挥作用,调用子类的func()->1。调用父类的test(),父类的函数已经构造完成,多态发挥作用,test会调用子类的func()->2。

2023-11-04 22:09:21 119 1

原创 笔试强训day17

其次,因为在计算字符出现次数中,要求是不区分大小写的,因此在处理过程中,如果输入的是小写字母,则计数不但要加上小写字母的计数,还要加上大写字母的计数,反之大写字母也是同样如此,而在 ascii 表中,大写字母和小写字母的差值是 32 ( 'a'的ascii值是97;echo()实现虚函数的重写,并且父类的指针指向子类的对象,所以构成多态,调用子类echo()函数 "Derived"A 封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

2023-11-04 17:20:57 73 1

原创 笔试强训day16

链接:https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84tpId=37&&tqId=21279&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking。本题的题目意思是输入的只是这些类型中的一种,个子,对子,顺子(连续5张),三个,炸弹(四个)和对王。由输入保证两手牌都是合法的,顺子已经从小到大排列,按照题意牌面类型的确定和大小的比较直接可以转换为牌个数的比较。

2023-11-02 21:48:17 60

原创 笔试强训day15

对于非0递增序列a1,a2...an,要想最终取值覆盖每一个种类 n = sum(a1...an) - a1 + 1(也就是总数减去最小值之后加一) 所以对于左右手手套颜色都有数量的序列,想要覆盖每一种颜色,则最小数量leftsum = 左边数量和 - 左边最小值 + 1, rightsum = 右边数量和 - 右边的最小值 + 1。本题是计算一个数二进制表示中1的个数,通过(n >> i) & 1可以获取第i位的二进制值,每次n右移一位,可以获取一位的二进制值,右移32次,n变成0,循环终止。

2023-11-02 00:11:29 63

原创 笔试强训day7

本题可以通过先找到距离N最近的两个Fibonacci数,这两个数分别取自距离N的最近的左边一个数L和右边一个数R,然后通过min(N - L, R - N)找到最小步数。本题是对于Fibonacci数列的一个考察,Fibonacci数列的性质是第一项和第二项都为1,后面的项形成递归:F(n) = F(n - 1) + F(n - 2)。用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。C 类的成员函数是属于类的,调用的时候是通过指针this调用的。

2023-10-30 23:28:15 42 1

原创 笔试强训day6

仔细读理解了上面的题目解读,本题就非常简单了,使用vector<vector<int>>定义一个二维数组,resize开空间并初始化,每个位置初始化为1,表示当蛋糕,a[i][j]位置放蛋糕,则可以标记处a[i][j+2]和a[i+1][j]位置不能放蛋糕,遍历一遍二维数组,标记处不能放蛋糕的位置,统计也就统计出了当蛋糕的位置数。也就是说:如果(x1,y1)放了蛋糕,则满足 ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) == 4的(x2,y2)不能放蛋糕。

2023-10-30 22:40:45 85 1

原创 笔试强训day5

dp[i] 就是以数组下标为 i 的数做为结尾的最大子序列和,注意是以 i 为结尾,比如说现在有一个数组{6,-3,-2,7,-15,1,2,2},dp[2]就是以-2为结尾的,那么显然dp[2]的最大值就是1(6,-3,-2),dp[3]要以7结尾那么以7结尾的子序列最大和就是8(6,-3,-2,7)。现在我们开始细细品一下上面这个递推式,求dp[i]的时候是不是有两种可能,要么就是像上面的dp[3]一样,dp[2]求出来是1了,再加上自己array[3]是最大。的描述,以下哪个选项是正确的()

2023-10-30 21:51:56 42 1

原创 笔试强训day4

1、A - B = a 2、B - C = b 3、A + B = c 4、B + C = d 这道题目的实质是:判断三元一次方程组是否有解及求解, 这里是小学生都会的问题了^^ 1+3可以得到A=(a+c)/2;4-2可以得到C=(d-b)/2;本题思路很简单,首先想清楚原理:N进制数,每个进制位的值分别是X0*N^0,X1*N^1, X2*N^2.....,X0,X1,X2就是这些进制位的值,就是就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进入下一个进制位的计算。

2023-10-30 20:29:49 96 1

原创 笔试强训day3

遍历字符串,使用cur去记录连续的数字串,如果遇到不是数字字符,则表示一个连续的数字串结束了,则将数字串跟之前的数字串比较,如果更长,则更新更长的数字串更新到res。如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。**a[3][4]是三行四列的二维数组,数组存放指针,32位系统中指针占4个字节,所以一共是4*12=48字节。4.能把函数处理结果的二个数据返回给主调函数,在下面的方法中不正确的是()%s 打印时遇到 \0 才会停止打印。

2023-10-28 22:13:08 59 1

原创 笔试强训day2

本题要求解的是排序子序列,排序子序列为非递增或者非递减,很多同学在这个非递增、非递减问题上很纠结,注意:非递减就是a[i]<=a[i+1],递减就是a[i]>a[i+1],非递增就是a[i]>=a[i+1],递增就是a[i]<a[i+1]。1. 若到a[n-1] 的最后一组是非递减序列,当i==n-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入。2. 若到a[n-1] 的最后一组是非递增序列,当i==n-1,a[i] >a[i+1],因为前面的数都是大于0的,这个输入。

2023-10-22 00:00:18 20 1

原创 笔试强训day1

一. 单选1.以下for循环的执行次数是()x++);A 是无限循环B 循环次数不定C 4次D 3次2.以下程序的运行结果是()return 0;3.下列main()函数执行后的结果为()A -1B 0C 1D 2条件判断语句 j=0;是赋值语句,恒等于0;所以不会进入循环4.下面程序输出是什么?A 1,2,3B 1,3,2C 3,2,1D 1,3,3从第一个else开始,与它最近的if结合...

2023-10-21 23:05:43 30 1

原创 笔试强训day14

一. 单选1. 下列有关this指针使用方法的叙述正确的是()A 保证基类保护成员在子类中可以被访问B 保证基类私有成员在子类中可以被访问C 保证基类共有成员在子类中可以被访问D 保证每个对象拥有自己的数据成员,但共享处理这些数据的代码this指针与父类子类的访问无关2.有一个类B继承自类A,他们数据成员如下:class A {...private:int a;B* e;

2023-10-21 22:21:11 37 1

原创 笔试强训day13

一. 单选1.下面叙述不正确的是()A 派生类一般都用公有派生B 对基类成员的访问必须是无二义性的C 赋值兼容规则也适用于多重继承的组合D 父类的公有成员在派生类中仍然是公有的D:依赖于继承方式2.下面 C++ 程序的运行结果是()son A;parent B;//子类没有,调用父类 x=0A.change();//子类没有,调用父类 x=1A.modify();//调用子类 x=2//子类没有,调用父类 x=2。

2023-10-19 23:11:46 255 1

原创 笔试强训day12

一. 单选1. 引用和指针,下面说法不正确的是()A 引用和指针在声明后都有自己的内存空间B 引用必须在声明时初始化,而指针不用C 引用声明后,引用的对象不可改变,对象的值可以改变,非const指针可以随时改变指向的对象以及对象的值D 空值NULL不能引用,而指针可以指向NULL引用与指针的比较:1、引用被创建的同时必须初始化(指针则可以在任何时候被初始化)2、不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)

2023-10-19 15:29:31 43 1

原创 笔试强训day11

一. 单选1. 关于内联函数说法错误的是()A 不是任何一个函数都可定义成内联函数B 内联函数的函数体内不能含有复杂的结构控制语句C 递归函数可以被用来作为内联函数D 内联函数一般适合于只有1~5行语句的小函数2. 以下不是double compare(int,int)的重载函数的是()函数重载与返回值无关,函数名相同,参数不同3.假定有类AB,有相应的构造函数定义,能正确执行语句,请问执行完此语句后共调用该类的构造函数次数为___A 5B 4C 3D 9。

2023-10-18 21:29:47 130 1

原创 笔试强训day10

一. 单选1. 内联函数在以下场景中最有用的()A 当函数代码较长且多层嵌套循环的时候B 当函数中有较多的静态变量的时候C 当函数代码较小并且被频繁调用的时候D 以上都不对正确答案:Cinline是建议型关键字,建议编译器编译的时候把内联函数展开2. 下列运算符中,在C++语言中不能重载的是:A *B >=C ::D delete不能重载的运算符有5个:?:(条件运算符).(成员访问运算符)::(域运算符)sizeof(长度运算符)

2023-10-18 18:59:54 56

原创 笔试强训day9

一. 单选1.某函数申明如下()有int a,下面使用正确的为:A Func(a)B Func(&a)C Func(*a)正确答案:AC++语言中,类ClassA的构造函数和析构函数的执行次数分别为()A 5,1B 1,1C 5,5D 1,5正确答案:A3. 动态内存分配(C语言中malloc,C++中的new)得到的存储区属于内存中的:A 静态区B 堆(heap)C 栈(stack)D 堆栈E 内核内存F 不确定。

2023-10-18 17:48:12 65 1

原创 笔试强训day8

一. 单选1. 关于重载函数,哪个说明是正确的()A 函数名相同,参数类型或个数不同B 函数名相同,返回值类型不同C 函数名相同,函数内部实现不同D 函数名称不同正确答案:A2. 关于引用以下说法错误的是()。A 引用必须初始化,指针不必B 引用初始化以后不能被改变,指针可以改变所指的对象C 不存在指向空值的引用,但是存在指向空值的指针D 一个引用可以看作是某个变量的一个“别名”E 引用传值,指针传地址F 函数参数可以声明为引用或指针类型正确答案:E。

2023-10-17 23:06:04 24

原创 C语言中static关键字的作用详解(简洁易懂)

static关键字

2023-02-26 15:58:11 147

空空如也

空空如也

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

TA关注的人

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