- 博客(15)
- 收藏
- 关注
原创 3. 无重复字符的最长子串
大循环表示从主串头到主串尾,小循环表示从第一个与所有元素都不重复的字符到大循环当前位置,逐步判断是否小循环中的字符是否有重复。max_none_rep比较,决定是否更新max_none_rep,同时,把队列的头改为重复位置的后一个,如代码中的j+1。if ((Q->rear+1)%MAXSIZE == Q->front) /* 队列满的判断 */if (Q->front == Q->rear) /* 队列空的判断 *//* 尾指针,若队列不空,指向队列尾元素的下一个位置 */
2025-04-14 16:45:30
691
原创 147 最小栈
也就是在函数内部无法开辟出这么大的空间,(但是把值调小之后还是不行),想过在函数外面创建一个MinStack类型的量,然后传入它的地址,但是题目中的函数没有输入参数,因此放弃这种想法。因此最后打算采用static静态变量,即在函数内部创建一个static变量,这个量在函数结束后不会消失,因此可以满足当前题目的需求。(但是感觉很蠢,感觉应该会有更好的解法,但是目前就先这样了。后来才反应过来,函数内部创建的量在函数运行完之后就不存在了,因此返回的总是一个null(空地址),但也是由这个想到了最终的解法。
2025-04-09 23:02:39
702
原创 2.两数相加
此时运行测试样例能够通过,但是在提交时却总是报错,Line 27: Char 14: runtime error: signed integer overflow: 1000000000000000000 * 10 cannot be represented in type 'long long int' [solution.c],主要原因是当输入数据过大时,即使把i和j的类型设置为long long也无法满足要求,至此宣告这种解法失败,或者笔者的能力用这种办法无法完成题目要求。其他输入时的情况也是类似。
2025-04-08 19:40:50
527
原创 LeetCode学习笔记(C语言版)
这里采用一个十分简单的办法,遍历所有可能,逐一判断,如果有符合条件的情况,就记录并且输出。从它的名字可以看出returnSize,它应该是表示一个返回数组的大小,它是一个指向int类型整数的指针,即*returnSize=2,代表我们返回的数组的大小应该是2。其实这里主要是想当然的把 returnSize当作我们要输出结果数组的指针,同时认为它的大小就是2。而题目中并没有说要用returnSize返回结果,也没有说明其大小,更没有说明它是一个指向数组的指针。// 返回0/NULL,不符合常规做法。
2025-04-07 17:40:52
386
原创 51单片机按位左移<<与循环左移区别
(P2循环左移1位) 此时P2=0000 1111,最左面移出去的一位1补到了最右面,其余数据整体左移一位,相当于把这八位数字写在一个可以旋转的圆上,然后逆时针转动一格的结果。P2
2024-11-13 16:34:15
746
原创 const与数组与指针
下面我们来看一个关键的问题:对于数组而言,(对于任意一个变量a也一样)我们定义了一个const类型的数组之后数组中的内容是无法被改变的,如果我们后续尝试改变数组days中的值时,程序编译时会报错。这就是指向const指针的特点:它不能用于改变值(这点与const 类型的数组或变量很类似),但是它本身存储的地址可以被改变(这点与const 类型的数组或变量大不相同),即可以让指针指向别处!即days与days[0]表示的东西是一样的,都是数组days的首元素的地址。运行上面的代码时,程序会报错!
2024-10-25 11:42:48
538
原创 const与数组与指针
下面我们来看一个关键的问题:对于数组而言,(对于任意一个变量a也一样)我们定义了一个const类型的数组之后数组中的内容是无法被改变的,如果我们后续尝试改变数组days中的值时,程序编译时会报错。这就是指向const指针的特点:它不能用于改变值(这点与const 类型的数组或变量很类似),但是它本身存储的地址可以被改变(这点与const 类型的数组或变量大不相同),即可以让指针指向别处!即days与days[0]表示的东西是一样的,都是数组days的首元素的地址。运行上面的代码时,程序会报错!
2024-10-25 11:41:08
171
原创 求助:在字符输入中,scanf第一次输入时,会忽略输入的字符,反而读取换行符‘\n‘去代替输入的数字。
但是在第一次输入时,程序会自动忽略输入的第一个字符,例如当我第一次要给selected赋值为1时,理想情况下我的操作为:1(换行),此时selected就被赋值为1,但是当执行代码时,情况却如下,当我输入1(换行)之后,代码并没有继续执行,需要我再按一次(换行)之后代码才继续执行,但此时selected的值却被赋值为换行符,具体操作为:1(换行)(换行),这时代码才能继续执行,但会造成错误赋值。printf("你的工资总数为%f,你需要缴纳的税金为%f,你的净收入为%f",
2024-10-14 22:22:06
648
原创 在计算中需要把整数乘除的结果转换成浮点数类型
对于此种情况,我们可以让平均值在计算时把数据类型从整形转换成浮点型,只需要我们让参与计算的整型量的前面乘以1.0,这样就能把整形数据类型转换成浮点型。程序要求根据用户输入的数字求出输入中奇数的个数及平均值,偶数的个数及平均值。输入0或非数字时程序结束。输入奇数的个数为%d,平均值为%d",num_o,ave_o,num_e,ave_e);输入奇数的个数为%d,平均值为%f",num_o,ave_o,num_e,ave_e);printf("输入偶数的个数为%d,平均值为%d\n \。
2024-10-11 11:04:52
849
原创 只读每行的首字符
非常简单的一个程序,但是运行时会发现,我们一次可以输入多个字符,且每个字符都会被打印出来,但是如果我们想要的结果只是打印每次输入的第一个字符,应该怎么调整?利用while循环和continue语句,将每行除了第一个字符,包括换行符,全部舍弃,即可实现想要的结果。在原代码基础上加入了一句 while(getchar()!下面的程序是读取字符,然后输出。
2024-10-09 21:13:20
257
原创 计算1+(-1)*n*(1/n)级数的前n项和结果总是为1或-1
此时编译时不会报错,但是无论输入的整数为多少,程序输出的结果总为1。修改了两处浮点运算的代码sum=sum+1.0/i;b=1.0*c/i,此时程序能正确运行出结果。题目是求两个级数1+(1/n)和1+(-1)*n*(1/n)的前n项和,n为用户输入的一个整数。printf("请输入一个整数:\n");printf("请输入一个整数:\n");
2024-09-27 12:57:07
445
原创 循环次数搞错导致代码出错exerc6.15
上述代码存在两处错误:1,循环条件判断出错,应该是字符a[i]!='\n'(回车),循环才继续执行。上述表述的是当a[i]=='\n'时循环才继续,所以不管输入多少字符永远只能读取一个字符;题目是读取任意数量字符,然后倒叙打印出来,要求包括空格。printf("请输入一行字符\n");printf("请输入一行字符\n");编译后可以成功运行结果。
2024-09-27 12:42:24
317
原创 scanf输入类型不对导致程序运行出错
题目是输入一个8位double数字的数组a[8],要求输出一个数组,满足b[0]=a[0],b[1]=a[0]+a[2],...b[7]=a[0]+a[1]+...a[7]。程序中printf输出类型选择为了%d,但数组中元素类型为double,应该用%lf,故程序出错。printf("请输入8个数字\n");printf("请输入8个数字\n");编译后可正确运行结果。
2024-09-27 11:02:35
267
原创 matlab学习笔记
xn是一个向量,也就是一维数组,这个的意思就算,假设k=10,M=5,则该式变为xn(10:-1:6),则x = xn(10:-1:6)的意思就算把xn(10)至xn(6)共五个数按从10到6的顺序赋给x(1)到x(5),即x(1)=xn(10),x(2)=xn(9)....,如果是正向的就不用加-1,例如xn(6:10),默认间隔为1.x = xn(k:-1:k-M+1);这个x是一个值还是一个向量,从y = W(:,k-1).' * x;en,dn是数组吗?2.xn(k:-1:k-M+1)是什么意思?
2024-04-09 17:21:54
159
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅