C学习_做题+感受-1.25

一. 有效括号序列

https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

我开始做错了,只是简单的把各种括号计数,有左括号就++,有右括号就--,这样最后为0,说明配对成功。

这题还要求括号的配对要按顺序来,就是左括号对应的右括号要先配对,才能出现其它括号(花括号,中括号)的右括号。

增益点:栈空间的使用

有序,要按顺序排列,左括号先有,右括号后有,最右边的左括号要和最左边的右括号配对

栈空间是可以先进后出,后进先出的:这就模拟了最右边的左括号在栈顶 ,只要最左边的右括号来配对成功,则弹出。

最后查看栈空间是否还有剩余的括号,有就没配对好,没有就配对好了。

对于要求顺序的思路可以想想栈的后进先出。

(思路是这么个思路,但对于C语言的解法,栈空间和开辟一个动态数组是一回事,你还是要看倒数第二个数是不是和新进的右括号配对,对于其它语言应该不一样)

二. 长度为 K 的重复字符子串

https://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc?tpId=196&tqId=37187&ru=/exam/oj

个人思路:先把字符串前K个数据保存在一个数组里,再判断这个数组是否有重复字符。并不断右移,遍历所有值。

增益点:滑动窗口

把这个K长度想象为一个滑动窗口,将原始的长字符串,分解为一个个遍历后的小字符串解决。

三. 最长重复子串

https://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc?tpId=196&tqId=37187&ru=/exam/oj

这题想了挺久的,好在完成了(因为没有C的标准答案)。最后和滑动窗口类似,不断缩小窗口大小,遍历所有数组。

增益点:可变动大小的滑动窗口

1)先考虑窗口为最大的情况,原字符串的一半长度

2)滑动窗口减1,再跑一遍。以此类推,直到窗口大小为1.

3)再将起始位置,定位到原始数据的第二个位置,滑动窗口变为(原字符串-1)一半的长度。一次类推,遍历所有字符。

个人感受

如果仅仅是为了获得一份工作,类似的这种oj题(似乎)满足相应的笔试要求(做了机考,也是类似这种题目),那确实是跳一跳能够到的高度。

但是这些题做起来,思考需要时间,真的比不过那些天才。我是切切实实地见过天才,不用高考,靠竞赛就进名校的人,我也曾和他们一起上过课,很多人,不止几个人。有的题目,我一点思路都没有,即使是练过一些题目,换了另一种题型,我就一筹莫展;那些人思考,他们也需要思考时间,但是他们可以做的出来。其中有的人就是搞计算机的,几乎全是童子功,这让我直到大学毕业前,也就是去年,都持有一种观点:有这种天才和他们童子功的存在,我又何必挤入计算机这条路上?

现在嘛,天才就做天才的事,他们去研究算法,研究卫星;我嘛,尽量在放弃前能让学校学习的理论知识能落实,能被应用。说实话,编程语言还是挺有魅力的,和吉他,诗歌差不多,就是偏数学了,我讨厌数学。

在这个做题网站上看到人发帖,说通信工程能干嘛,下面一条评论说"matlab秋招啥用没有",哈哈,确实,哪家公司没事推动最底层的科技进步呢?也只有研究所和大学会做了。多感受感受,找到热爱的研究目标,读博去了(可能性很低)。

相关推荐
晓纪同学22 分钟前
QT-简单视觉框架代码
开发语言·qt
威桑22 分钟前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服26 分钟前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生32 分钟前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生35 分钟前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans37 分钟前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手1 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
Chinese Red Guest1 小时前
python
开发语言·python·pygame
一棵星1 小时前
Java模拟Mqtt客户端连接Mqtt Broker
java·开发语言
爱吃西瓜的小菜鸡2 小时前
【C语言】判断回文
c语言·学习·算法