盘点2024
博文
2024年发布博文728篇,基本上每天都2篇;目前有6篇博文处于待发布状态;这些天比较忙,所以草稿箱的博文急剧减少,只有182篇。几乎全部是原创,全部是自己刷题(力扣、洛谷)的题解。起初,只能先做题,做完题后,总结;现在水平略有提高,先写题解,再编码,提交通过后,再更新题解。相关博文,我已经按知识点分门别类,方便大家查阅:
代码(方便学习算法及单元测试)
2024年7月,我将我电子书、博文的代码统一到一个解决方案,方便大家学习算法,同时也方便大家学习单元测试。在开发过程中尽早执行单元测试有助于及时发现问题并加以修正。这不仅减少了调试时间,还降低了后期修复错误的成本。问题发现的越早,解决的成本越低。单元测试可以将部分缺陷扼杀到摇篮中,让测试员感觉不到。最直接的体会,某个封装类、底层模块进行了大的修改,如果单元测试完整。理论上:a,编译通过了,说明接口没变,即兼容历史版本。b,单元测试全部通过,内部实现没有问题。“单元测试完整”是理论状态,不可能达到,故以上两个结论退化为:a,如果编译不通过,说明没有兼容性,请马上修改。b,如果单元测试不通过,那说明新的实现有问题。请修改实现或单元测试。
视频教程
主要完善了C++算法,基本上都是二分查找。大致包括四部分:二分查找基础、寻找首端、寻找尾端、利用系统的二分函数二分查找。
C++算法之二分查找
电子书
历时多年,反复修改了三版,还是不能让人满意。见本博文绑定资源。
为什么主攻算法
算法是程序的灵魂,许多算法都来源于实际应用,这点洛谷比力扣明细。新人可能体会不明显,拖界面、存数据、爬数据、增删查看、写数据库确实用不到算法。程序员是一个高高淘汰率的职业,只会基础的技能,失业的风险太大。我最深的体会:a,最大子段和预料超时。b,拓扑排序解决流程节点执行顺序。
算法可以发掘本质,许多看起来不同的问题,本质相同
一,若干师傅和徒弟互有好感,有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。
二,有无限多1X2和2X1的骨牌,某个棋盘若干格子坏了,如何在没有坏的格子放足够多骨牌。
三,某个单色图,1表示前前景,0表示后景色。每次操作可以将一个1,变成0。如何在最少得操作情况下,使得没有两个1相邻(四连通)。
四,若干路人,有些人是熟人,如何选出最多的人参加实验。为了避免熟人影响实验的效果,参加的人不能是熟人。
一二是二分图的最大匹配,三是二分图的最小点覆盖,四是二分图最大独立集。 而这三者是等效问题。
快速指数幂
f(x,y) 计算x的y次方。
f ( x , y ) = { f ( x ∗ x , y / 2 ) y 是偶数 x × f ( x ∗ x , y / 2 ) y 是奇数 f(x,y) =\begin{cases} f(x*x,y/2) && y是偶数 \\ x\times f(x*x,y/2) &&y是奇数 \\ \end{cases} f(x,y)={
f(x∗x,y/2)x×f(x∗x,y/2)y是偶数y是奇数
C1097Int pow(long long n)const
{
C1097Int iRet = 1, iCur = *this;
while (n)
{
if (n & 1)
{
iRet *= iCur;
}
iCur *= iCur;
n >>= 1;
}
return iRet;
}
图像的仿射变换(平移、缩放、旋转等)都是通过矩阵运算实现的。多个仿射矩阵,可以相乘成一个矩阵。这样无论多少点,都只需要进行一次放射变换。注:矩阵也可以快速指数幂。
2025年的恐惧和迷茫
几年前,我就发现旧同事、同行,有一半的改行了。对本科生而言,37岁是一个小坎;对本科生而言,30岁是一个小坎。无论是专科、本科、硕士,45岁是大坎。2025年6月,我就45岁了。不知道能否有一份编程的工作,如果不能,能否退居二线(网上上课、接活、写游戏)。2024年,太难了。60人的群,大约10人失业,失业的大部分人没找到工作,少部分学历高的找到工作,但没有升薪。我们班(本科,教育技术学专业)有4位同学写程序,2位失业,1位大幅降薪。我们公司由于业务不饱和,工资也稍稍减少。
出于对45岁的恐惧,我几年前就疯狂刷题,这是CSDN网友复活告诉我的,他可厉害了,VM、MS、华为随便进。我在新三版级别的公司蹉跎了半辈子,不求进大厂,只期望能多苟且几年。
关于提高程序员地位的不成熟想法
我们对老板说:“善待程序员”,老板一定会无视。能否这样?“我们几个穷哥们,凑点钱成立了一家投资咨询公司。每人认缴10万,实缴1千。如果有老板有接受本公司投资的意向,请他派本公司的程序员(社保缴纳一年及以上)作为代表沟通。如果对方有架构师的证书,直接谈;如果没有架构师证书,则进行机试(力扣较简单的困难题这个级别),通过后就谈。谈拢后,公司召集股东和外围人员开会讨论投资事宜,如果有人原意投资,则提供咨询服务(只限于软件开发相关)。”
扩展阅读
我想对大家说的话 |
---|
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注 |
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。 |
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
如果程序是一条龙,那算法就是他的是睛 |
失败+反思=成功 成功+反思=成功 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。