- 博客(14)
- 收藏
- 关注
原创 内联函数inline
代码膨胀举例说明就是如果一个函数有几十行代码,我们可能会选择使用内联函数去节省时间,但是如果这个函数在整个程序中会被使用上百次甚至上千次,那么使用内联函数会占用大量空间。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销, 内联函数提升程序运行的效率。1.所以内联函数是一种以空间换时间的操作,因此我们可以想象到在一些带有递归,循环,或者代码很长的情况下不适合使用内联函数。所以在调用内联函数的时候,最好是函数内包含少量代码,且没有递归或循环等代码行。
2023-07-31 19:54:04 193 1
原创 c++函数重载与引用
做参数时的优点:如果在一个程序中有一个int a【100000】这种需要传参时就可以考虑做引用传参,函数的形参是一份临时拷贝,如果直接传参则会给编译器增加负担,而用引用传参就不会开辟新空间,因为引用的空间就是原空间,节省了不少时间。c++里引入了函数重载的概念,函数重载是函数的一种特殊情况,c++中允许在同一个作用域内有重名函数,这些重名函数的形参列表(参数个数 或 类型 或 顺序)必须不同。int& b = a;解释3:一旦引用了,就不能更换,例如你对变量a引用,取别称b,你就不能把别称b给变量c。
2023-07-22 21:54:28 174
原创 牛客OR141 密码检查
'\0',因为我们要判断整个字符串,所以用‘\0’来停止。这里提一下~scanf(“%d”,&n)的原理,scanf成功读取后的返回值是输入的个数,在本题目的用法中,如果是正常输入返回的是1,如果异常则返回EOF,在vs也就是-1,而对-1进行整体取反就是0,则退出while循环。主要是后半部分,将赋值为1的操作删除,直接改为判断是否为真,为真则为1这种形式,这样使代码简洁了点,然后为了要求三,直接再来一个else,如果有数字,字母以外情况出现,则++一下,最后判断是否为0即可。
2023-03-19 20:10:13 181
原创 LeetCode1616分割两个字符串得到回文串
创建a1和b1字符数组去接收数据,首先判断切割后有没有‘’“+”abc“这种情况的出现,否则进入else循环,在else循环里面通过先对a1赋值上a切割后的前一部分再加上b切割后的后一部分,b1同理,接着就是双指针判断a1和b1其中一个是否为回文串。checkConcatenation判断切割后是否为回文字符串,切割后必然是a的前半部分加上b后半部分或者b前半部分加上a后半部分。这道题目是把一个字符数组分为两份,然后跟另外一个字符数组拆分后再叠加,我们只需创建两个字符数组,一个用来接收。
2023-03-18 21:06:08 288 2
原创 LeetCode3.无重复字符的最长子串
逐步分析的话就是先计算字符串长度,然后循环len次,定义一共标识变量same,通过赋值的形式来判断是否有重复字符,如图,当s[j]== s[right],就意味着有重复字符了,然后让left=j+1,再保存遇到重复字符前的长度,存储在max中,right-left+1就意味着两者之间字符串的长度,left = j+1意思就是从重复字符的下一个再进行以上计算。首先是我自己解题,写的太过复杂效率很低,虽然能运行成功但是运行速度低而且占用内存也挺大,这里可以当做反面教材了,以后写代码能优化尽量优化。
2023-03-17 21:50:06 70
原创 LeetCode13罗马数字转整数
接着就是通过循环来叠加数值存放到ans里,然后根据题目的六种特殊情况,是小的放在大的左边,所以我们可以比较大小,可以通过减的方式来算出最终答案,思路如下。可以看出每个字符代表唯一数值,并且一般小数字在大数字的右边,如果不符合这条规则则根据图中下面的六条规则来。接着看见了个感觉很巧妙的方法,链接附在下方,将特殊情况中的字符重新定义,最后转换成单个字符的判断。首先是自己写的代码,没有巧妙的地方,先是判断每一个字符,接着再判断是否是那些特殊情况中的字符。然后就是求出需要转换的罗马字符长度,储存在n里面。
2023-03-17 17:42:00 87
原创 LeetCode1615网络秩
求最大网络秩,我们按图中说城市0和1,我们可以看见0城市有[0,1][0,3] 1城市有[1,0][1,2][1,3]题目要求求出最大数量,我们储存完之后,比较每个城市对的网络秩数量-1(重复一条),再输出最大的那一对,这道题目便可解决。在这里如果看不懂这些名词,我们可以这么理解,网络秩就是让你求一个城市对总共所连接的道路,我们分析题目给的图。如connect[0][1]代表城市0和1,接着再创建一个一维数组用来储存每座城市所连接道路的最大数量。如num[1],代表城市1所连接的道路最大数量。
2023-03-16 20:54:07 94
原创 回文数求解的方法
接着我们可以想到如何判断一个字符数组是否回文,我们可以采用双指针,一个指针在数组第一个元素,另外一个从数组最后开始,同时定义一个变量flag,如果有一对不相等就赋值为0,两个指针同时从两端聚集在中间,与数组思路也几乎相同,就不多赘述。其实就是把一个数倒序排列,例如1321,倒序排列就是1231,如果一个数倒序排列后跟原来的数相同,那么这个数就是回文数。这里就是按部就班的求出num倒序排列的数值再与原数进行比较,为了方便观看,打印出来y的值,可以发现,y的数值就是num倒序排列后的数值。
2023-03-14 20:59:53 1101
原创 浮点型数据的储存以及数组指针
同理,对于double来说,占据64个比特位,S占一个,E占11个,剩下52个比特位存储M,这也是为什么float被称为单精度浮点数而double被称为双精度浮点数。如果要进行-1+1这个操作我们可以想象用二进制来加减,而如果计算机储存原码,那么加完之后并不会得到32个全0的二进制数字,但是我们可以通过补码来入手。我们可以发现int 和 float明明都是占据四个字节,但是打印出来的数确不一样,因此我们可以发现int和float在数据的储存和提取上是存在不同的。储存在计算机中是以补码的形式来储存。
2023-02-22 16:38:16 478
原创 如何将一串小代码转化成exe文件并且放入计划服务设置开机自启动呢?(方法挺好,就是有点耗朋友)
将代码转化为.exe文件并添加到计划启动服务实现开机自启的方法,以及创建任务设置开机自启的一些方法
2022-12-05 09:25:28 962 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人