自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux的命令简记

记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。创建硬链接后,源文件和硬链接文件的inode号相同,并且不会增加inode的数量。创建一个独立的文件,这个文件会让数据的读取指向它连接的那个文件的文件名。当文件的内容被取用时(被其他命令调用时),就会更改这个时间。实际记录文件的内容,如果文件太大时,会占用多个block。当文件的状态(权限和属性)改变时,就会改变这个时间。最nb的属性,完全的文件保护(root才能设置)查看文件本身的详细信息的命令是什么(目录)

2024-02-14 22:04:58 1078

原创 对象,友元,初始化列表

自定义类型的拷贝,需要调用拷贝构造函数(传值调用,传值传参,就要使用拷贝构造,但是引用不会,所以要用引用,而且前面一般会加const,如果传的是对象的地址(参数是对象的指针),那就不是拷贝构造,而是构造函数)变成对象的朋友,能够访问对象里面的私有成员,写好函数声明之后,友元的函数还要声明要写在类里,前面加上friend即可(函数定义可以不用写friend)静态的成员变量,不是属于某一个对象,属于所有对象,属于整个类,初始化列表初始化的顺序不是初始化列表的顺序,而是声明的顺序。

2024-02-14 22:01:49 885

原创 C++,关于对象的笔记

每个成员函数(包括构造函数和析构函数),都有一个this指针,指向调用对象,this存储的是地址,对应的对象可以表示为*this。如果定义的对象变量是一个常属性(const)的变量,则需要把方法函数也定义为常属性,以确保对象中成员的值不会被修改。构造函数的参数名不能和对象的成员名起一样的名字,因为构造函数的参数表示的不是类成员,而是赋值给类成员的值。类里面定义的存储数据的变量,就是类的成员,如果是函数,就是成员函数。不是存储在对象里的,而是作为形参出现的,是存储在栈帧上的。class,后面跟的是对象名。

2024-02-14 21:57:19 515

原创 命名空间,内联函数,函数重载

命名空间,using的意思是默认展开命名空间,这样的话就不用命名空间名::命名空间的东西,可以直接调用命名空间里的东西,std是官方定义的命名空间。用&符号,int& c = a,这里c就是a,a就是c,对c修改也能修改a,并且一个变量可以有多个别名,也能给别名起别名。凡是被命名空间包起来的东西,就可以和系统库里自带的东西共存(相当于一堵墙,不用命名空间的话就是访问的全局变量)可以自动识别类型(相比较C,C还要用什么%d,%f,c++可以不用)直接展开,全部暴露,有冲突的风险,这个时候就可以指定展开。

2024-02-14 21:54:28 464

原创 GDB的使用方法简记

如果想要生成debug默认,用gcc/g++ -g(使用gdb调试)gdb,跳过中间的语句,跳到下一个断点的方法。gdb,不想让值(地址)常显示的方法。gdb,调试过程中修改变量的值的方法。gdb,查看变量的值(地址)的方法。gdb,在函数中查看局部变量的命令。gdb,让值(地址)常显示的方法。display 变量(&变量)gdb,在函数能任意跳转的方法。gdb,查看函数调用的命令。gdb,删除断点的方法。gdb,禁用断点的方法。gdb,启用断点的方法。gdb,进入函数的方法。gdb,结束函数的方法。

2024-02-14 21:33:28 481

原创 概述希尔排序

预排序的作用是使待排数据尽可能地接近有序,其中把数组进行分组,每隔gap个数据就是一组,然后对gap分组的数据进行插入排序。最后的插入排序,就是当gap = 1时进行的插入排序,因为已经有了预排序的作用,所以插入排序可以很快的速度进行排序。经过以上两步,希尔排序可以说是非常快的排序(远比O(N²)的排序快,他是O(N^1.3))待排数据是2,4,6,8,10,1,3,5,7,9。

2023-12-17 22:40:36 376 1

原创 概述插入排序

第三步:把摸到的牌和手上的牌进行比较,如果摸到的牌比手上的牌小,就把手上的牌往后挪动,一直挪到摸到的牌比手上的牌大为止,然后将摸到的牌插入到手上的牌中即可。待排数据是2,4,6,8,10,1,3,5,7,9。第一步:将已经在手上的牌进行排序。

2023-12-17 21:24:42 351

原创 力扣,622. 设计循环队列

循环队列里有一个头指针,用来控制队头出队,一个尾指针,用来控制队尾入队,还有个尾前指针,用来控制队尾的前一个数据,和顺序表实现的循环队列一样,我们多出来一个节点用来控制队满。尾指针->next == 头指针就相当于队满了,空出来的这个节点不存储数据。这次使用的是链表设计的循环队列,等下会再写一个用数组实现的。

2023-11-20 13:09:42 64

原创 双向循环链表的代码和实现

今天,学习了双向循环链表,以下是链表的增删改查的功能的代码以及实现的截图。

2023-11-04 14:40:05 68

原创 力扣,2859. 计算 K 置位下标对应元素的和

这个题其实很简单,但是要注意一个点,是“下标”的二进制位等于k,而不是数组中的值中的二进制位和k相等。一个数,判断二进制位中的个数,只要是%2 == 1即可,然后数字/2.

2023-10-25 22:51:26 136

原创 力扣,2744. 最大字符串配对数目

其实,这个题很简单,两层循环遍历数组,定义一个变量count用来计数,只要满足words[i][0] == words[j][1] && words[i][1] == words[j][0]这个条件,count自增1即可。

2023-10-25 22:45:06 122

原创 力扣,88. 合并两个有序数组

由于修改之后的数组要是从小到大排好的,所以只需要让两个数组的值进行比大小即可,也就是nums1[end1]和nums2[end2]比大小,谁大就放进原来的数组即可。在这里,如果nums2提前比nums1遍历完了,那没什么。如果nums1的值都遍历完了,但是nums2的值还没有,那我们就需要把nums2[]的值再加进去,所以程序的最后需要再加入一个循环用来把nums2的值放进去。又是这个题,但是我们换一种思路,之前的那种解法是时间换空间,而这次是空间换时间,我们只需要多定义几个变量即可。

2023-10-25 22:38:29 43

原创 力扣,2367. 算术三元组的数目

这个题其实很简单,我们定义一个三层的循环,变量i的值从0开始,变量j的值从i+1开始,变量k的值从j+1开始,最内层只要判断nums[k] - nums[j]) == diff && (nums[j] - nums[i]) == diff即可。

2023-10-24 23:20:37 65

原创 力扣,1512. 好数对的数目

这个题其实很简单,我们定义一个count变量,用来计数好数对的数量,然后用两次循环变量进行遍历即可。i变量的循环比j变量的循环的数值少1,这样就能保证i < j。在循环的最里层,只要nums[i] == nums[j],count++即可。

2023-10-24 23:14:15 46

原创 力扣,1672. 最富有客户的资产总量

我们都知道,二维数组其实是行和列的组合。在这个题里,行是每个人,而列则是每个人的资产。那我们就定义一个最大值变量,用来比较最大值,然后在第一层循环(每个人)中,定义一个总数sum变量,让每个人的资产相加(循环)。循环遍历结束之后,就和max进行比较,这样就能求出来最大的资产,然后最后返回即可。这个题里,要我们找出客户资产的最大值,并且返回最大的资产数目。

2023-10-24 23:06:24 136

原创 力扣,2500. 删除每行中的最大值

这个题,我也是看题解才知道怎么做的,其实有一个最简便的做法,就是给每一行数组排序之后找每一列的最大值即可。

2023-10-23 23:10:06 71 1

原创 力扣,1470. 重新排列数组

首先我们先观察题目,题目中给出了一个数组,一个n(用来分别X值和Y值),然后这个数组本来是[x1,x2,...y1,y2],让我们改成[x1,y1,x2,y2...]这种形式。也就是一个x值后面跟着一个y值。我比较笨,观察出来的规律是原来是nums[i]的位置变成了nums[2*i],nums[i+n]填到了nums[2*i+1]。所以我们可以新建一个数组,用空间换时间的方法。

2023-10-23 20:47:31 53 1

原创 力扣,26. 删除有序数组中的重复项

这个题最关键的一点是交换的判定,因为有很多重复项,所以我们需要找的是前后不一致的项。= nums[right-1]的时候,当前的nums[right]就和nums[left]进行交换,然后left指针增加1,而right指针是负责遍历数组的,在循环的结尾的时候负责增加1即可。这个题相比较第27题,难度会更难一些,第27题是让我们删除数组中的指定元素,而这个题则是让我们删除数组中的重复项。当这样遍历结束之后,nums中的0到left-1的元素都不相同,然后返回left,就是修改后的数组长度。

2023-10-23 20:35:28 53 1

原创 力扣,27. 移除元素

从这个题里,题目让我们移除元素,其实这里有一个很简单的思想,双指针,定义两个指针,一个left和一个right,right指针用来遍历数组中的每个元素(也就是循环每走一次right就++),left指针用来控制交换,它的增加是有条件的,每一次交换left才增加一次。交换的条件就是每次right指向的元素的值和left指向的元素的值不同时,二者才交换。

2023-10-23 20:17:56 37 1

原创 力扣,2114. 句子中的最多单词数

首先,我们观察题目,题目中要我们算出存在单词数量最多的句子,通过观察,我们发现一个句子中的单词数量总是比空格的数量多1,也就是说我们只要知道了一个句子中空格的数量就能知道单词的数量了。我们可以设一个sapce变量,用来统计空格,初值为1,可以使用嵌套循环,外层变量控制每一个句子,内层循环控制访问句子中的每一个单词。如果遇到了“空格”字符,space就+1。当内层循环结束之后,space变量和max变量进行比较,这样求出来的就是一个句子中最多的单词数,最后返回max。

2023-10-22 14:55:44 70 1

原创 力扣,2828. 判别首字母缩略词

然后,如果单词数和字符数的数量一致,也就是说单词的数量和字符的数量都是wordsSize,我们就可以通过一个循环来同时比较words中的单词的首字母和s中的字母字符,如果两个都不一致,则返回false,如果循环走完了,也就是说单词首字母和字符串s中的字符都一致,返回frue。首先,我们先观察,题目给出的数组words,如果words中的单词数量和字符串s中的字符个数不一致,我们可以直接返回false。

2023-10-22 14:40:23 166 1

原创 力扣,1431. 拥有最多糖果的孩子

在这个题中,我们可以假设每一个孩子都自己一个人拥有额外的糖果,然后在每个孩子中找出拥有糖果最多的那个孩子,如果一个孩子,拥有了额外的糖果,糖果数量还是小于有糖果最多的那个孩子,那他就不是拥有糖果数量最多的那个孩子,否则他就是。

2023-10-22 14:33:55 71 1

原创 力扣,2037. 使每位学生都有座位的最少移动次数

我们可以先把两个数组都排个序,这样每个学生的位置减去座位的绝对值就是要移动的次数(排序了之后就是最小的-最小的,一直到最大的-最大的)这个题题解里有大佬说是什么贪心和动态规划,我也不懂==。我现在的思路九十八官方的题解复述一遍。

2023-10-21 23:51:13 67 1

原创 力扣,1684. 统计一致字符串的数目

我们可以设置一个mask变量,用来和allowd中的变量进行相或运算(统计每个字母出现的位数),一个count,用来计数,一个mask2,每遍历一个words中的字符变量便把对应的字母的位设置为1(也是相或运算),然后mask2和mask1进行或运算,如果最后的结果和mask1相等,就表示words中的字母在allowd中出现过,count+1即可。

2023-10-21 23:36:21 47 1

原创 力扣,LCP 06. 拿硬币

值得要注意的时候,硬币的堆数是奇数的时候,我们要向上取整,比如说3个硬币,每次拿两个,我们可以拿两次就可以解决问题,只需要(3+1)/2就能做到向上取整。在这个题里,有一个最基本的思路,我们很贪心,每次都是拿两个硬币,然后用一个变量count来记录每堆硬币拿去的次数。

2023-10-21 23:11:24 105 1

原创 力扣,485. 最大连续 1 的个数

这个题里,让我们计算其中最大连续1的个数,之间遍历数组即可,我们先设置两个变量,一个是count,用来统计连续1的个数,遇到0就会清零,然后是max变量,当遇到0的时候就和count进行比较,统计1的最大值。其中,最后还要max和count进行比较一下,是因为如果出现【1,1,0,1,1,1】这种最后没有0的情况。

2023-10-21 22:58:50 49 1

原创 征服C指针,第二章

静态变量时从程序启动到运行结束为止持续存在的变量,静态变量总是在虚拟地址空间上占有固定的区域函数和全局变量,在分割编译和连接时,如果他们的名称相同,即使他们跨了多个源代码文件也被当作相同的对象来对待。进行这项工作的是一个被称为“链接器”的程序函数中的变量,也就是自动变量,是存在于完全相同的地址上的,在生命自动变量的函数执行结束后,自动变量就不能使用了,所以不同的函数使用相同的内存区域是没有问题的C语言中,在现有的被分配的内存区域之上以“堆积”的方式,为新的函数调用分配内存区域。

2023-10-21 21:50:19 299 1

原创 习题15,16,17

今天看完了《笨办法学C语言》的习题15,16,17,写了如下的读书笔记。

2023-10-21 16:58:30 178 1

原创 征服C指针,第一章

标量就是指char,int double和枚举型等数值类型,一级指针像数组,结构体和共用体这样的将多个标量进行组合的类型,叫做聚合类型。

2023-10-18 23:46:34 45 1

原创 C语言中assert()调用之后编译,出现错误后的解决办法

关于这个错误,我这里的解决方法是把UTF-8编码,转换成GBK编码,然后重新编译即可。

2023-10-17 19:34:14 670 1

原创 数据结构学习day2——顺序表的完整实现

在这一步,我们设计一个函数,参数是顺序表的起始地址和一个想要删除的位置,我们首先用断言语句assert(暴力检查的语句)来检查删除的位置是否正确(pos >= 0 && pos < s->sz),然后写一个循环,让当前元素被后一个元素覆盖即可(i要小于s->sz-1,不能小于s->是因为i会指向最后一个元素,从而导致顺序表外的一个未知元素被拷贝)这个是最简单的一个函数,首先要判断函数的位置是否合法(位置要在顺序表中),然后直接把顺序表中对应的位置的值修改为想要的值即可。1. 顺序表中对应位置元素的删除。

2023-10-17 17:46:22 50

原创 《C和指针》,第一章

今天是技术类书籍阅读的第一天,所读的书是《C和指针》,因为我对指针的理解比较差劲,希望能够通过该书加强自己对指针的理解,从而加深对C语言整个的理解,以下是我所整理的,认为比较重要的知识点。

2023-10-15 22:27:03 43

原创 数据结构学习Day1——顺序表

顺序表通俗来说就是数组,可以通过下标来随机访问数组中的元素。#define DataType int //把int类型定义为DataType,表示顺序表中的数据,其实什么数据类型都可以重新定义//定义一个指针变量data,用来存储对应的数据int sz;//定义一个sz变量,用来控制当前的数据个数//定义一个capacity变量,用来表示当前顺序表中的容量}SeqList;//函数功能:初始化顺序表s->sz = 0;//函数功能:销毁顺序表//解除s->data指向空间的所有权。

2023-10-15 20:21:21 164

原创 第一次写博客

我叫王明磊,是一名通过专升本考试,开学后就是一名准大三的学生了,我非常喜欢计算机技术,但是因为前几年没有好好学习过的原因,所懂得的知识非常少,现在也了解了CSDN,也知道了通过博客发表自己的所学所想,以后我会把自己的每一天所学通过博客发布在这里,同时也作为自己的学习过程的记录:)

2023-07-09 16:12:38 41

空空如也

空空如也

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

TA关注的人

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