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秋招啥用没有",哈哈,确实,哪家公司没事推动最底层的科技进步呢?也只有研究所和大学会做了。多感受感受,找到热爱的研究目标,读博去了(可能性很低)。

相关推荐
Ciderw7 分钟前
Go中的三种锁
开发语言·c++·后端·golang·互斥锁·
查理零世9 分钟前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
皮肤科大白32 分钟前
如何在data.table中处理缺失值
学习·算法·机器学习
皮肤科大白36 分钟前
“““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
学习
jk_10140 分钟前
MATLAB中insertAfter函数用法
开发语言·matlab
啥也学不会a1 小时前
PLC通信
开发语言·网络·网络协议·c#
汤姆和佩琦1 小时前
2025-1-21-sklearn学习(43) 使用 scikit-learn 介绍机器学习 楼上阑干横斗柄,寒露人远鸡相应。
人工智能·python·学习·机器学习·scikit-learn·sklearn
C++小厨神1 小时前
C#语言的学习路线
开发语言·后端·golang
qq_544329171 小时前
下载一个项目到跑通的大致过程是什么?
javascript·学习·bug
心之语歌2 小时前
LiteFlow Spring boot使用方式
java·开发语言