自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 牛客- 字符串通配符

那么可以匹配一个数字字符或者字母字符,但是如果str此时不是字母或数字,不能匹配,返回false。如果不是字母,但是也是相同的,比如都是# . 之类的 index1和index2都向后走。如果都是字母,并且是同一个字母(不区分大小写),index1和index2都向后走。能抵消多个字符串的字符,让index1不动,index2向后走。返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false。看成不存在,跳过: index1向后走,index2不动。:匹配0个或以上的字符(注:能被。

2023-04-08 22:58:34 604 2

原创 LeetCode654.最大二叉树

然后划分左右子区间 [left,max_index-1] 和 [max_index+1,right]找到[left,right]的最大值 以及最大值坐标max_index,构造root。递归构造左右子区间: root -> left 和 root ->right。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。具体需要考虑左右区间的划分,以及递归的结束条件。创建一个根节点,其值为 nums 中的最大值。返回 nums 构建的 最大二叉树。

2023-04-07 18:28:20 712 1

原创 LeetCode103.二叉树的锯齿形层序遍历

如果i是偶数层,说明从左向右遍历。i是奇数层,从右向左遍历。定义一个i标识是第几层。

2023-04-03 16:21:25 200

原创 剑指Offer26.树的子结构

针是否等于B的根节点的值对A做先序遍历的过程中 如果根节点相同我们去判断此时B是不是以该根节点的子树的子结构!该函数是用于判断,B是不是以A为根节点的树的子结构。如果A,B值不等,直接返回false。因此需要借助辅助函数, hasSub(A,B)实际上进行先序遍历的同时要进行递归判断子结构。实际上2和3就是在进行先序遍历!题目让判断B是不是A的子结构。但是我们进行判断是基于。, 去判断是否为子结构。

2023-04-03 15:31:17 216

原创 LeetCode394.字符串解码

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。把 k[encoded_string] 当作一次递归,即遇到数字,就要递归。给定一个经过编码的字符串,返回它解码后的字符串。k[]括号内部可能有多个子[],利用递归。s 保证是一个 有效 的输入。

2023-03-25 17:07:10 390

原创 中缀表达式怎么转后缀表达式

中缀表达式是相对于人来说的,因为我们人是会判断`+`和`*`的运算优先级谁高谁低但是计算机是不会判断的,因为计算机是默认从左向右读取数据,它先遇到 `+` 就会计算,其结果是不对的。它不会提前看到后面还有一个 `*`

2023-01-12 11:42:39 515

原创 LeetCode17.电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

2023-01-12 10:53:18 136

原创 LeetCode46.全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。主函数中需要遍历每一个元素为起始。

2023-01-08 20:45:19 129

原创 LeetCode54.螺旋矩阵&& LeetCode59.螺旋矩阵Ⅱ | 螺旋矩阵问题

LeetCode螺旋矩阵问题

2023-01-05 15:26:01 436

原创 LeetCode498. 对角线遍历

如果坐标和为奇数,就向下走。然后根据上面所列的具体的情况再进行判断向右or向左or向上or向下。,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。所以,从[0][0]开始填入数组,并判断下一次往哪走。如果坐标和为偶数,就向上走。我们规定,在路径中有。

2023-01-05 14:09:19 873 2

原创 LeetCode396. 旋转函数

最直接的思路就是,直接一个个旋转尝试,直到找到最大值,但是看这一题的难度也就知道了,暴力的方法肯定通过不了,复杂度太高了!其中F(0)可以首先求出,作为max的初始值。

2023-01-01 21:57:35 206

原创 【STL学习之路】vector的模拟实现

vector的模拟实现 | vector的深拷贝问题

2022-12-31 22:08:50 514

原创 LeetCode661.图片平滑器

如果一个单元格周围存在单元格缺失的情况,则计算平均灰度时不考虑缺失的单元格(即,需要计算红色平滑器中 4 个单元格的平均值)。定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中 9 个单元格的平均值)。的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。这题不太难,用C语言来做比较有挑战性,而C语言主要是参数的传递很恶心!整数矩阵 img ,返回对图像的每个单元格平滑处理后的图像。给你一个表示图像灰度的。

2022-12-30 21:02:24 159

原创 LeetCode64. 最小路径和

请找出一条从左上角到右下角的路径,每一步只能向下走或者向右走。遍历二维数组,找到最小值。给定一个包含非负整数的。

2022-12-29 11:01:51 159

原创 LeetCode419.甲板上的战舰

给你一个大小为 `m x n` 的矩阵 `board` 表示甲板,其中,每个单元格可以是一艘战舰 `'X'` 或者是一个空位` '.'` ,返回在甲板` board `上放置的 战舰 的数量。>战舰 只能水平或者垂直放置在` board `上。换句话说,战舰只能按 `1 x k`(1 行,k 列)或 `k x 1`(k 行,1 列)的形状建造,其中` k` 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。示例2💡解题思路

2022-12-29 10:18:00 386

原创 LeetCode 598 范围求和Ⅱ

的矩阵 M ,初始化时所有的 0 和一个操作数组 op ,其中。在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数。验证:如果ops数组为空,那么直接返回区域就是m*n 成立!所以,直接把最小值设置为m和n 从而去找最小的a和b。得到的就是最后的区域长度和区域宽度。:最后的区域长度 最大也不过m。区域宽度 最大也不过n。

2022-12-28 17:27:31 618

原创 LeetCode453.最小操作次数使数组元素相等

给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1。返回让数组所有元素相等的最小操作次数。除了最大值的坐标,其余坐标元素都++每一次都找出最大值的坐标。每一次记录count。

2022-12-27 13:06:07 316

原创 LeetCode283.移动0

​ 所以需要用count记录0的个数,当所有0都移动完了就break,否则会死循环。在i位置遇到0,把后面的元素向前移动覆盖,然后把最后一个位置赋值为0即可。最后end走到numsSize,src位置就是最后一个非0的下一个位置。有可能 i 位置的0 是因为 已经所有的0都到后面了。可以发现 src和end交换的过程就是一直把0向后换。可能 i 一个位置 移动一次之后还是0,需要循环。那么src和end一直自己交换,也是正确的!end去找非0,放到src位置。当end位置为非0的时候。

2022-12-27 13:04:26 622

原创 【STL学习之路】vector的使用 | vector的迭代器失效问题

vector就是顺序表的封装,是一个模板类,如上图所示。为方便vector里可以存任何数据类型,因此搞成了模板。第一个参数是模板类型T,T可以是int,double,char等,也可以是其他class或者struct第二个参数是一个空间配置器,(STL极致追求效率,向内存池来申请空间而不是直接向堆)。这个参数是缺省,一般不用管它。

2022-12-26 21:15:21 951

原创 nowcoder-Triangle

给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字,例如,给出的三角形如下:`[[20],[30,40],[60,50,70],[40,10,80,30]]`最小的从顶部到底部的路径和是20 + 30 + 50 + 10 = 110。注意:如果你能只用O(N)的额外的空间来完成这项工作的话,就可以得到附加分,其中N是三角形中的行总数。

2022-11-09 18:36:44 150

原创 【笔试刷题训练】day_17

A:虚函数的作用是实现了多态,虚函数的实现利用了继承B:✔C:虚函数需要先去虚表中找到函数地址再进行调用,与编译期间就确定地址的静态函数相比,效率较低。✔D:必须借助父类指针 / 引用 ✔A,B,C说法都没问题D:覆盖也叫重写,函数必须是相同函数名,并且参数个数和类型都相同,题目说法❌多态的条件之一:父类的指针或引用去调用,所以引用可以作为产生多态效果的手段!子类对象 赋值给基类对象 / 基类引用 / 基类的指针是可以发生的,,即指向父类的那一部分。选项B说法是错误的但是。

2022-11-07 09:08:07 181 1

原创 【笔试刷题训练】_day16

.

2022-11-06 17:14:03 117

原创 【笔试刷题训练】day_15

首先,A* p = new B;这里会调用B的构造函数,B是A的子类,所以构造B的时候会先调用A的构造函数,但是在A的构造函数中会调用bar()函数,而bar是虚函数,又满足是父类的指针调用,理应完成多态。但实际上,**在构造函数没有执行完的时候是不会执行多态机制的!!原因如下:因为虚表指针是在有虚函数的情况下编译器自动添加的一个成员,它在初始化列表进行初始化的子类调用构造函数时,会先调用基类构造函数。此时未执行子类构造,子类的虚表指针还没有完成初始化,也就是说子类的虚表还没有构造完成。

2022-11-05 23:37:40 333

原创 C++构造函数中调用虚函数为什么不会实现多态

这是一种特例,在这种情况下,即在构造子类时调用父类的构造函数,而父类的构造函数中又调用了虚成员函数,这个虚成员函数即使被子类重写,也不允许发生多态的行为。如果父类构造函数中调用虚函数,而此时的虚指针如果指向子类的虚表,即允许多态发生,由于子类的构造函数还没有执行,子类中的成员未初始化,在所调用的虚函数中可能会发生访问子类成员的行为,其行为是不合法的!1.我们定义一个子类对象,先执行父类的构造函数,编译器会自动给子类的VPTR指针赋值,使其指向父类的虚函数表。而之所以要这样设计,有可能是出于安全问题。

2022-11-05 08:54:00 710

原创 【笔试刷题训练】day_14

成员是否可以访问取决于继承之后的权限,与this指针无关类中的成员函数只有一份,对于多个对象都是调用的这一个代码,那么如何区分是谁调用的该函数呢?实际上,成员函数有一个默认隐藏的形参this,每一个对象调用成员函数的时候都会把该对象的地址传递给this,这样在调用的时候就可以知道是哪一个对象调用的该成员函数了所以,this指针的作用就是A:对于.*sizeof.:?这五个运算符不可以重载。

2022-10-31 12:11:12 228

原创 【笔试刷题训练】day_13

因为继承就是为了使用一部分基类的成员,所以一般情况都是公有继承。√B:D:继承方式有三种:公有继承、保护继承、私有继承答案选C但是要注意: virtual inline void func(){} 这段代码是可以通过编译的!因为inline对于编译器来说就是一个建议,所以很有可能不满足内联的条件而成为一个虚函数!看选项,不管定不定义,编译器都会生成默认的析构函数。所以A、B肯定错误析构调用:先子类后父类,所以选C//定义一个纯虚函数,抽象类不能被实例化!那么什么是呢?

2022-10-29 21:42:56 599 1

原创 【笔试刷题训练】day_12

总结:在成员函数中调用delete this,会导致指针错误在析构函数中调用delete this,会导致堆栈溢出(死循环)A: 对于一个类,如果我们不显式写构造函数,编译器会自动生成一个无参数的构造函数,但是如果我们自己显式定义了,这个无参数的默认构造函数就不会生成。所以有没有无参数的构造函数取决于我们自己。B:

2022-10-28 12:37:59 256

原创 【C++】堆栈的使用 | 堆栈的大小 | 动静态分配问题

栈和堆的使用:自动管理栈和堆的大小问题:动静态分配:动态分配:静态分配:动静态分配的不同:1.时间:2.空间:_alloc()_alloc()

2022-10-28 11:25:38 1051

原创 【笔试刷题训练】day_11

每天坚持一点点,坚持带来大改变今天是刷题的第_11天,加油!

2022-10-23 12:02:52 155 1

原创 【笔试刷题训练】day_10

MyClass* b[6] :创建一个指针数组,数组每一个元素是MyClass* 类型,所以不会调用构造函数。题目中a先声明,b后声明。所以初始化列表中无论a和b谁写在前,都是a先初始化,b后初始化。中(VS系列,gcc系列等),将空类的大小设置为1,用于标识该类创建的对象是存在的!MyClass[5]:创建一个5个对象的数组,所以调用5次构造函数。所以很简单,只需要依次取检查 行、列、主对角线、副对角线即可。初始化列表的初始化顺序 取决于 成员变量的声明顺序。对于空类,并不是0字节,在。

2022-10-23 10:27:30 429 1

原创 【笔试刷题训练】day_09

动态内存开辟和释放需要匹配使用如果不匹配的话可能会出现内存泄漏,或者程序直接崩溃对于new和delete,(假设对类A)delete p对于new[]和delete[]delete p[]所以本题中 new[5]:调用了五次构造函数delete :只会调用一次析构函数 答案选A但选项并不是很严谨,因为对于内置类型来说 new[] 搭配 delete使用不会报错,但是对于自定义类型成员new和delete必须匹配使用,否则就会崩溃!所以理应有个选项为:程序可能崩溃。

2022-10-22 18:59:03 508 1

原创 【笔试刷题训练】day_08

函数传参的时候,函数参数可以是引用也可以是指针类型。引用的底层是指针,所以引用传参的时候底层也是传递的地址,只是在语法角度看到的是传值综上几条,答案选择E,引用其实也是传递的地址!对于B:用一个类的对象赋值给一个另一个对象,说明另一个对象是已经存在的,所以会调用赋值运算符重载,不会调用拷贝构造!这一题考察了构造和拷贝构造的编译器优化问题运算符重载指的是:定义一个类之后,如果想通过该类的对象直接使用某种运算符,编译器是不支持的,因为他不知道对于这个自定义类型这种运算表示什么具体含义。

2022-10-21 21:43:55 323

原创 【笔试刷题训练】day_07

内联函数对于编译器只是一个建议,如果该函数没有递归、循环、并且代码较少,那么编译器就会采取内联,否则就不会采取内联的建议所以选择:C回顾:类的两种定义方式所以答案选A,类中包括数据成员和函数成员的声明B: 默认权限是私有C: 共有、私有、保护哦都可以D: 可以在类外,也可以在类里定义初始化列表是成员真正初始化的地方,初始化列表中,只能对类中非静态的成员变量进行初始化,因为静态的成员变量是不依赖于对象,只是依赖于类的!静态成员在类外部进行初始化三种必须在初始化列表进行初始化的成员。

2022-10-21 11:56:21 305

原创 【笔试刷题训练】day_06

补充知识:printf(格式化串,参数1,参数2…),printf的参数是可变参数格式化串:printf中的后面的参数列表按照什么格式打印%d:按照整型方式打印%f:按照float方式打印但是格式化串有规定,%后面跟上特定的字符才代表一定的格式化,比如%Q就是无效的格式,当格式无效的时候,编译器会自动忽略%所以printf(“%Q\n”,15) : 直接输出Q所以对于%%,就相当于一个%(其实这样就类似于 转义字符\\表示一个\)所以答案选择 A:%%

2022-10-16 22:37:22 213

原创 【笔试刷题训练】day_05

所以最终答案为xycdBCD,选D所以:one在对齐数为4和8的时候都是16字节two在对齐数为4的时候为16,对齐数为8的时候为24👉 题目链接2. 连续最大和👉 题目链接动规

2022-10-16 13:44:59 1417 4

原创 【笔试刷题训练】day_04

C/C++中各种进制的表示方法二进制:在数字的末尾加b,如101010b八进制:在数字前面加数字0,如0123十进制:数字本身,如123十六进制:数字前面加0x 或者 数字后面加h,如0x123、123h%d:十进制方式输出%o:八进制方式输出%x:十六进制方式输出所以显而易见,题目所给两个数分别是8进制和10进制,十进制123转化为8进制为173,所以选择C题目要求把flag的第二个bit位置为0那么与flag运算的数的第二个bit位应该是0,而2的二进制位0000 0010。

2022-10-15 20:55:56 499 1

原创 【笔试刷题训练】day_03

二维数组的初始化,不同的语言有些不同,有些遗忘这一题涉及到函数栈帧、大小端问题,值得思考一下题目所给是32位下小端机器,但是如果再64位机器下,结果却是: 1,2,3这是为什么呢?这就要结合体系结构来说了你可能想说,%d不是打印int类型吗?难道64位下%d是打印8个字节吗?其实所谓的打印,也是CPU先把数据取出来进行计算,然后才输出到屏幕上的,取数据的时候,是完整的取的。CPU需要先把数据取出来,然后再根据特定的打印格式去输出!

2022-10-14 10:22:28 433 2

原创 【笔试刷题训练】day_02

m.nf%e%lf可以不进行初始化,正确(2):i的地址赋值给 int const*类型 没毛病(3):p2中 const修饰的是指针指向的内容,p2指针本身可修改,正确(4):i的地址赋值给p3,p3指向的内容可修改,p3不可修改,正确(5):改变p3的指向内容,正确(6):改变p2的指向内容,错误!(7):修改p3的指向,错误!’3.5.6.这里考察的是位段的理解(1) a是一个无符号整形,大小为4字节共32位,a占19位,还剩下13位。

2022-10-13 10:43:59 591 4

原创 【笔试刷题训练】day_01

我们利用程序打印看一下,输出如图所示:可以看到,%5.3s输出的只有3个字符,并且前面似乎有两个空格%5.4s输出的有4个字符,前面有一个字符这里有一些没有注意到的知识点%m.ns:m:输出字符串的宽度n:左起截取目标字符串的n个字符,并且是右对齐,补空格所以就可以解释上面的程序了。

2022-10-12 12:21:33 135

原创 【STL学习之路】string的模拟实现

str是一个指针,指向动态申请的数组,如果不显示写一个深拷贝,那么默认生成的拷贝构造就会采取值拷贝的形式进行,优化问题:如果输入的字符串很长,初始版本中读入字符就会不断+= 可能会频繁扩容,效率很低。所以:拷贝的时候需要另外开辟一段新空间,把原对象的空间的内容拷贝到新空间。优化的思想: 利用一个临时数组,先把读到的数据放到临时数组中。缺点:strlen()是O(N)的接口,调用多次,效率太低!其实不是的,因为可以通过接口来实现容器内成员的更改。如果临时数组满了,就接到字符串的后面。

2022-10-03 22:56:59 337 4

网页设计作业:web计算器

利用html,css,js设计一个简单计算器,可以实现加减乘除运算

2023-01-02

git/小乌龟/tools.rar

git/小乌龟/tools.rar

2022-01-12

空空如也

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

TA关注的人

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