- 博客(33)
- 收藏
- 关注
原创 类与对象(下)
在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量 的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始 化一次,而构造函数体内可以多次赋值。
2024-04-20 16:44:38
563
原创 类与对象(上)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。成员函数如果在类中定义,编译器可能会将其当成内 联函数处理。· 2.类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名一般情况下,更期望采用第二种方式。// 我们看看这个函数,是不是很僵硬?
2024-04-18 17:02:08
1161
原创 初始C++
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。// bit是命名空间的名字,一般开发中是用项目名字做命名空间名。// 我们上课用的是bit,大家下去以后自己练习用自己名字缩写即可,如张三:zs// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;
2024-04-18 13:30:52
1004
原创 1.5w字长文,搞懂基本的所有排序
直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用时间复杂度:O(N^2)空间复杂度:O(1)稳定性:不稳定*p1 = *p2;*p2 = temp;i
2024-04-14 23:48:41
919
原创 leetcode每日一题1969
注意点3:接着继续考虑,尽可能的形成1这个思路没错了,问题是最多有多少个1可以形成,接着我看示例3:我先是疑惑了一下,为什么是 1 1 1 6 6 6 7呢,和不变的情况下,差大积小,为什么不是 1 1 1 5 6 7 7呢,明显积更小啊,之后就被我发现了注意点三:在二进制位上的0、1数量是相对不变的,p=3举例,每个二进制位上都是4个1,3个0;,假如能形成 1 1 1 1 1 ……1 n,那肯定积最小,但是,这种情况是达咩的,这就是注意点二:交换是交换,上限不会超过2^p-1,数字的上限已经决定了。
2024-03-21 14:57:52
556
原创 leetcode每日一题2671
如果一个数字出现了,那么原来次数的次数就要少一次,原来次数+1的次数就要多一次,freq_cnt[freq[i]]--如果一个数字要删除,那么原来的次数的次数要少一次,原来次数-1的次数就要多一次;其实我们可以用两个哈希表来解决这道题,接着freq【i】++
2024-03-21 13:59:12
394
原创 leetcode每日一题--矩阵中移动的最大次数
然后依次进行遍历,找到下一列可以走到的所有行坐标,这些下一列的行坐标都是严格满足比其走过来的点值要大的,然后将这些行坐标的集合替换掉之前的集合,再进行遍历,找到下一列能够走到的行坐标。我们创建一个二维dp数组,初始化为0,我们从不同行的第一列元素开始走,能走到的地方我们做一个标记为1,已经标记过的我们就不再去走了,以免死循环。在这题中,我们从第一列开始,往后能走多少,到了第几列,其实就是这一次的走的步数,走到最远的列,就是最大的移动次数。在递归过程中,记录能访问到的最大列号,作为答案。
2024-03-16 22:59:39
505
原创 考研C语言复习进阶(6)
_FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些预定义符号都是语言内置的。举个栗子:语法:#define reg register //为 register这个关键字,创建一个简短的名字;) //用更形象的符号来替换一种实现。
2024-03-16 11:10:00
933
原创 考研复习C语言进阶(4)
C语言提供了一个动态内存开辟的函数:单位是字节这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。
2024-03-15 18:14:43
744
原创 考研复习C语言进阶(3)
有了结构体类型,那如何定义变量,其实很简单int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体嵌套初始化//结构体嵌套初始化位段的声明和结构是类似的,有两个不同:1.位段的成员必须是 int、unsigned int 或signed int。2.位段的成员名后边有一个冒号和一个数字。
2024-03-15 14:37:34
1239
1
原创 考研C语言复习进阶(2)
数组指针是指针?还是数组?答案是:指针。我们已经熟悉:整形指针: int * pint;能够指向整形数据的指针。浮点型指针: float * pf;能够指向浮点型数据的指针。那数组指针应该是:能够指向数组的指针。下面代码哪个是数组指针//p1, p2分别是什么?//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。所以p是一个指针,指向一个数组,叫数组指针。
2024-03-13 23:28:14
1462
原创 考研C语言复习进阶(1)
前面我们已经学习了基本的内置类型:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数以及他们所占存储空间的大小。类型的意义:1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。2. 如何看待内存空间的视角。
2024-03-12 23:35:41
1351
1
原创 考研C语言复习初阶(6)
有了结构体类型,那如何定义变量,其实很简单。int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值。struct Stu //类型声明//名字int age;//年龄//初始化int data;//结构体嵌套初始化//结构体嵌套初始化Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
2024-03-12 00:26:16
515
1
原创 考研C语言复习初阶(5)
我们写出的表达式如果不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在问题的。二.练习1.交换两个变量(不创建临时变量)
2024-03-11 21:05:37
1201
原创 考研复习C语言初阶(4)+标记和BFS展开的扫雷游戏
C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的,数组在创建的时候如果想不指定数组的确定的大小就得初始化。所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。仔细观察输出的结果,我们知道,随着数组下标的增长,元素的地址,也在有规律的递增。数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。2. &数组名,取出的是数组的地址。
2024-03-09 19:14:19
1201
1
原创 每日一题leetcode-找出数组的第K大和
读完题目后我们知道,该题就是让我们在子序列中求和,我们要在不同的子序列中排序找到第K大的和。何为子序列?子序列就是在一个数组中抽出一些元素构成一个新的数组即可,不要求一定是连续的;例如:数组【4,5,6】,子序列有【4】【5】【6】【】【4,5】【4,6】【5,6】【4,5,6】我们其实就可以发现,一个数组中有N个元素,
2024-03-09 14:36:44
402
原创 考研复习-函数栈帧(详解)
我们在写C语言代码的时候,经常会把一个独立的功能抽象为函数,所以C程序是以函数为基本单位的。那函数是如何调用的?函数的返回值又是如何待会的?函数参数是如何传递的?这些问题都和函数栈帧 有关系。函数栈帧(stack frame)就是函数调用过程中在程序的调用栈(call stack)所开辟的空间,这些空间 是用来存放: 函数参数和函数返回值 临时变量(包括函数的非静态的局部变量以及编译器自动生产的其他临时变量) 保存上下文信息(包括在函数调用前后需要保持不变的寄存器)。
2024-03-09 00:14:20
722
原创 考研复习C语言初阶(3)
如果库函数能干所有的事情,那还要程序员干什么?所有更加重要的是自定义函数。自定义函数和库函数一样,有函数名,返回值类型和函数参数。但是不一样的是这些都是我们自己来设计。这给程序员一个很大的发挥空间。statement;//语句项ret_type 返回类型fun_name 函数名para1 函数参数函数返回类型不写,默认返回INT类型我们写一个可以找出两个数中最大值的函数//get_max函数的设计(x):(y);
2024-03-08 16:14:11
1248
1
原创 每日一题leetcode第2834:找出美丽数组的最小和
那我们很自然的就想到,比如N=5,那其最小和肯定是1+2+3+4+5,再给个条件说target=9,那我们会发现一件事情,4和5我们只能有一个,我们肯定舍弃5,拿个6,此时3+6=9,舍弃6,拿进来7,2+7=9,舍弃7,拿8,8+1=9,舍弃8,最后进来9,可以此时最小和是1+2+3+4+9.首先我们看到这个题,就是根据给出的数组元素个数N,从[1,N]找出N个元素,使得N个元素的和最小,其中随便抽两个数出来,两个数之和不能为target。序号2的和: 首先要知道后面有几个数:N-target/2;
2024-03-08 13:53:00
695
2
原创 leetcode每日一题2575
我们第一思路是每次从左往右拿一个数与之前的数组合然后整除,如果可以整除,那么到i这里的word[i]就可以改成1,但是这样的时间复杂度到了O(N);
2024-03-08 00:23:50
284
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人