- 博客(77)
- 收藏
- 关注
原创 数据库笔记-0-MYSQL安装
官网地址:https://www.mysql.com/cn/点击导航栏的Download划到网页最下面,点击MySQL Community (GPL) Downloads »点击MySQL Installer for Windows点击Download,可以直接下载内存比较大的那个,直接安装即可。如果提示你登录账号,点击No thanks, just start my download即可跳过。
2025-11-30 19:30:09
393
原创 (10)普中A2 51单片机DS1302实时时钟
引脚名作用VCC2主电源VCC1备用电源GND电源地X1、X232.768KHz晶振CE芯片使能IO数据输入/输出SCLK串行时钟我们在使用单片机进行计时,假如断电了,下次再开机就会重新计时。但是DS1302有备用的电源,就算单片机断电了,依然可以正常计时。下次单片机通电后再读取数据就可以了。晶振使用32.768KHZ和我们使用11.0592HZ进行串口通信是一个道理,在某些方面精度会更高。我们只需要对这些寄存器进行读写,就可以读时间,和修改时间了。
2025-11-30 15:53:55
1728
原创 (9)普中A2 51单片机LED点阵屏
LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。
2025-11-28 14:20:36
531
原创 leetcode2073. 买票需要的时间
这个只需要用一个while循环作为外层循环。只要k位置的人没有买完就一直执行。内层就遍历tickets即可。虽然排队要求第一个人买完去最后面排队,但是你遍历完再从头遍历,效果是一样的,然后遍历的时候看当前位置是否为0,不为0的话就让时间加一秒,让这个位置的票数减一。如果为0的话,看是不是目标位置,是的话就可以直接返回时间t了,如果不是就什么也不做,去遍历下一个元素。
2025-11-27 16:43:50
233
原创 leetcode20. 有效的括号
但是在出栈之前也要检测一下栈里是否有元素,没有元素说明就不匹配。直接返回False即可。如果遍历完,然后再看栈里面是否还有元素,如果还有元素说明也不是有效字符串,如果没有元素,说明就是有效字符串,返回True即可。很经典的栈的练习题。我们只需要把输入看作是一个栈。然后遍历字符串,如果是左括号就入栈,如果遇到右括号,就将左括号出栈,看是否匹配,如果不匹配说明字符串不有效。
2025-11-27 16:14:12
207
原创 leetcode704. 二分查找
二分查找,很简单基础的算法。思想就是定义一个左指针,一个右指针,然后让目标值和这两个指针的中间值进行对比,如果说目标值比中间值大,说明左指针需要移动到中间值的地方,如果目标值比中间值小,说明右指针需要移动到中间值的地方,如果目标值刚好等于中间值。当然,二分查找还有一个重要的前提就是目标序列必须是有序的才可以。而查找的结束条件就是左指针在右指针的右边,说明就没有符合条件的元素。
2025-11-27 12:04:22
211
原创 leetcode1. 两数之和
这个题我看到的第一时间想到的就是哈希表,我们只需要遍历数组,然后用目标值减去当前值,看这个数在哈希表里面有没有,有的话说明就找到了。因为题目说了一个元素肯定不能是重复使用的,先把全部元素都放进去就会出现比如目标值是6,用两个3+3就实现了。这个题还有更简单的方案就是暴力破解了,两层循环,让所有的数字两两组合,看它们的和是否和目标值相等,但是效率肯定会很低就是了。因为我们要找那个数,肯定是作为键查找速度更快,找到了值就是我们要的下标了。所以我们要一边遍历,一边查找,如果没有,就把当前元素插入哈希表里面。
2025-11-27 12:03:53
120
原创 leetcode217. 存在重复元素
这个问一个数至少出现两次就返回true,否则返回false,我们可以想到集合可以去重,假如把这个数组转换成集合,然后集合的长度和数组的长度是一样长的,那么就说明没有重复的元素。如果不一样长,就说明有重复的元素,直接返回true即可。还有一种策略是可以利用哈希表,遍历数组,把数组的值作为键,把出现的次数作为值,发现某个数字出现的次数大于1的时候,可以提前结束循环,效率会高一点。
2025-11-27 12:03:40
206
原创 leetcode136. 只出现一次的数字
这种需要统计的题目,很明显就是使用哈希表,统计每个数出现的次数,然后再遍历一遍哈希表,查看出现次数为1的数,就是我们要找的数字了。当然我这个并不是速度最快的,但是我觉得可能会更容易理解一点,社区有利用异或运算符的写法,效率会高很多。
2025-11-26 20:40:27
251
原创 leetcode1015. 可被 K 整除的最小整数
这可以大大提高速度,因为取模的运算效率和加减来比是慢很多的。被2整除的数字就不用多说了,一个偶数乘以任何数肯定还是偶数。个位数一定是5或者0,当然也不可能找到全为1组成的数来整除它。看到这个题,我们可以简单的想到就是用一个无限循环。求1能不能整除k,11能不能整除k,111能不能被k整除.........以此类推。但是我们需要考虑不存在这样n的数字就返回-1的情况。我们只需要用k对2和5取模,能被2和5整除的一定找不到。然后是c++版的,c++不用多说,效率是很高的,同样的逻辑很轻松就0ms通过了。
2025-11-26 16:47:39
182
原创 C++笔记-36-STL常用算法
和上面的函数一样,需要在求并集之前给vtarget指定一个大小,我们要考虑最大的情况,就是两个集合没有重复的元素,所以要开辟的空间是两个集合大小的和。函数原型:set_intersection(iterator begl,iterator end1,iterator beg2,iterator end2,iterator dest);函数原型:set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);
2025-11-26 16:17:47
871
原创 C++笔记-34-map/multimap容器
本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值。
2025-11-24 09:21:12
587
原创 C++笔记-33-set/multiset容器
编译器不知道自定义数据类型怎么排序,自定义数据类型必须指定排序规则,否则插入会直接报错。一样是利用仿函数指定规则。public:it!= st.end();
2025-11-23 20:18:30
943
原创 leetcode1041. 困于环中的机器人
然后count我一开始也弄的比较大,是100,但是最后发现10也可以通过。然后while内部的for就是执行输入的指令,如果是“G”就判断下当前的方向,对x和y进行对应的操作,如果是“L”或“R”就放到direction函数改变方向。我先解释下每个变量,其中s就是原本输入的字符串,我觉得太长了就替换了,然后x,y就是当前的坐标,count是一个循环的次数。就是重复执行多少次指令,如果还没有成一个环,就可以判定机器人无法回到原点,flag代表的是方向,0是北,1是东,2是南,3是西。返回改变之后的方向。
2025-11-22 11:25:02
480
原创 2025.11.22力扣每日一题
只需要遍历一遍数组就可以了。用一个count统计要进行多少次操作,判断这个数对3取模是否为0,不为零就让count加一就可以了。因为当这个数对3取模为1的时候,可以减一,就能整除3,对3取模为2的时候可以加一,也可以整除3,也就代表不能被3整除的都是只需要进行一次操作就可以了。
2025-11-22 10:59:26
241
原创 C++笔记-32-list容器
功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的STL中的链表是双向循环链表,尾部结点的指针域指向头部,头部节点的指针域指向尾部。由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向选代器总结:STL中List和vector是两个最常被使用的容器,各有优缺点。
2025-11-21 20:59:57
921
原创 数据库笔记-1-SQL语言之DDL
删除指定表,并重新创建该表。USE 数据库名;查询当前数据库所有表。查询指定表的建表语句。修改字段名和字段类型。
2025-11-21 20:59:25
333
原创 一本通网站2045:【例5.13】蛇形填数
还有一个小细节就是不能写四个if,而是下面的写else if,否则就可能存在什么情况呢,就是上面修改了flag,然后刚好满足下面的if条件,又带着修改了x和y,最后的结果也会有问题。但是我的第一版代码写的时候发现,碰壁的条件是什么?我们初始化二维数组的所有值都为0,那么就有两种情况,一种是4这种情况,到了边界,需要拐弯,一种是12这个位置的情况,右边已经被填充过了。为什么0,1,2,3对应的是下左上右呢,我觉得是便于我理解的,因为一开始是从右上角往下走,然后左拐,然后上拐,然后右拐,这样思路比较连贯。
2025-11-20 20:19:27
494
原创 C++笔记-31-stack容器和queue容器
stack是一种先进后出(First In LastOut,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为可以类比弹匣,羽毛球筒等,先进后出,因为先放进去会压在最下面,它想出来就需要上面的出来才行。
2025-11-20 20:09:19
483
原创 C++笔记-30-deque容器
双端数组,可以对头端进行插入删除操作deque的工作原理是deque有一个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据,中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间.deque容器的迭代器也是支持随机访问的。
2025-11-19 09:30:01
751
原创 C++笔记-29-vector容器
/容器预留len个元素长度,预留位置不初始化,元素不可访问。//将[beg,end)区间中的数据拷贝赋值给本身。如果我们事先确定要用很多元素,就可以使用reserve,可以提高一定的效率。//将n个elem拷贝赋值给本身。swap(vec);//将vec与本身的元素互换。减少vector在动态扩展容量时的扩展次数。
2025-11-19 09:29:21
708
原创 C++笔记-28-string容器
特点:string类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。
2025-11-18 20:08:12
460
原创 (8)普中A2 51单片机串口通信
标题一串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。
2025-11-14 17:00:23
1451
原创 一本通网站2050题:【例5.20】字串包含
这个题目我的第一想法就是按照题目的要求,不断的把原来的字符串循环移位,然后判断是不是字串,但是这样的效率很低下,一些边界地方还容易出错,后来想到了一个比较好的方案就是。让s3=s1+s1,什么意思呢,就是让这个串和这个串拼接。那么是不是能在拼接之后的字符串里面找到任意一个s1循环移位之后的一个字符串?然后再去判断s2是不是s3的字串。这个思路也是非常的巧妙,笨拙按照题目要求来,效率低下还容易出错,用这种方案就可以很容易的解决了。
2025-11-12 18:12:45
168
原创 C++笔记-26-类模板
局限性:模板的通用性并不是万能的例如判断两个数是否相等的模板,假如传入的是一个Person类,或者一个数组,就会出问题了。因此C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板。
2025-11-12 15:32:26
789
原创 一本通网站1140:验证子串
这个题利用c++里面string库的string类的find方法很快就能解决了,只需要判断s2是不是s1的字串,是的话就打印,不是的话再判断s1是不是s2的字串,如果谁也不是谁的字串。最后就直接打印“No substring”
2025-11-12 12:30:15
252
原创 leetcode860题. 柠檬水找零
然后如果是20元,就有两种情况,找一个10元,一个5元,或者三个5元。有5元就可以给客户找零了,对应的索引减去1,如果有10元,但是没有5元,就直接返回False,这里如果没有5元,自然也不可能找3个5元了。然后如果是5元,那就不用找零,就不需要管,如果是10元,就需要找5元,但是找之前需要判断手里是否有5元,如果有就让索引0减1,没用就直接返回一个False。然后如果手里没有10元,就判断是否有3个及以上的5元,有的话就可以找零,没有的话就返回一个False。
2025-11-10 20:39:37
208
原创 一本通网站1130:找第一个只出现一次的字符
但是发现程序还是不行。然后发现这时会出现次序问题,题目中要求的是第一次出现仅一次的。那么我们可以再遍历一遍字符串,然后找到数量为1的,自然就是第一次出现并且仅出现一次的字符了。并且题目说了字符串长度小于100000,两次都是单层循环,时间也是没什么问题的。一开始我的想法是利用桶的思想,定义一个26大小的数组,对应字母a到z,然后遍历字符串,让数组对应位置里的值加一,最后统计出每个字母出现的次数,然后遍历arr数组,找到大小为1的,就是仅出现一次的字符。
2025-11-10 19:40:53
225
原创 一本通网站1128题:图像模糊处理
根据样例来看,使用的值都是输入时候的上下左右及自身,也就是左边的数在改变之后,求右边这个数的之后,不能用左边改变之后的值,而是原本的值。所以之前的的矩阵问题可以边求变打印,但是这个不行,必须要用第二个数组来存储。因为要保证原来的数据不会改变。
2025-11-09 10:11:01
251
原创 (7)普中A2 51单片机定时器,按键控制流水灯
定时器个数:3个(T0、T1、T2),T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源注意:定时器的资源和单片机的型号是关联在一起的,不同的型号可能会有不同的定时器个数和操作方式,但一般来说,T0和T1的操作方式是所有51单片机所共有的遇到一个新的单片机,可以查阅对应的手册,查看定时器的个数。
2025-11-09 09:43:33
1478
原创 一本通网站1125题:矩阵乘法
代码的话,定义两个二维数组,分别存储矩阵A和B,我在写的时候,下意识的想当然了,按线性代数里的计算方法写,结果越写越乱,然后又看了一眼题干,不是已经把公式给你了嘛,严格按照公式来就可以了,和上一个题,矩阵加法一样,我们可以不用定义第三个二维数组存储矩阵C,每求一个位置的数字直接打印就可以了。学过线性代数的朋友应该都不陌生矩阵的乘法,3x2的矩阵和2x3的矩阵相乘,最后得到的是3x3的矩阵,也就是题目中的n x k的矩阵。包括题目只给了三个变量,因为只有n x m的矩阵才能和m x k的矩阵相乘。
2025-11-08 21:03:31
233
原创 一本通网站1124题:矩阵加法
学过线性代数的朋友就知道,矩阵相加是对应的行和列进行相加,也就是矩阵A的第一行的第一个数和矩阵B的第一行的第一个数进行相加,矩阵A的第一行的第二个数和矩阵B的第一行的第二个数进行相加,以此类推。那么就可以想到创建一个二维数组存储第一个矩阵即可,第二个数组在读取的时候直接相加并打印,这样就可以节省代码和提高性能,最后就能得到相加之后的结果了。
2025-11-08 20:28:07
246
原创 C++笔记-24-文件读写操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化C++中对文件操作需要包含头文件。
2025-11-08 12:12:05
633
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅