C++算法与数据结构

求职的感想

学历、证书、名气都是敲门砖,大大提高面试机会。能否入职主要取决于:a,项目(行业)经验。b,编程语言的熟练程度。c,算法水平。
对于某个具体公司,a>b > c,对于所有公司a < b 短期而言a > b > c,长期而言a < b 单项目80分的竞争力远大于三项都60分。

驳“学历无用轮”

海瑞最高官职是南京右都御史(一种说右佥都御史。都御史排序为:右都御史、左都御史、右副都御史、左副都御史、右佥都御史。北京的都御史才管全国),妥妥的堂官,举人的天花板。举人一般当教谕,运气好能当知县,熬资历到州同知,很难当上知州。有人统计明朝50%的进士能当上堂官。吏的天花板是仓大使、鱼大使,不如举人的起点。
如果从长征开始当红军,没立过大功,也没读书。凭资历能当副排长。排长都是可有可无的,纯粹为了安置刚毕业的军校生,副排长就是给他们专设的。

刷题建议步骤

求职硬通货:一,好的学历,这个要下血本。本科,可以考研,读研。专科,可以专升本,再考研,读研,二,软考,一年考两次,有些科目考一次。考完再找工作的时间成本太高。三,刷题。四,项目经验,理论最重要,但这东西无法量化,主观性太强。
一,学校学习、网课学习、自学一门语言。
二,考过计算机二级或把试题刷熟练。
三,https://zerotrac.github.io/leetcode_problem_rating/#/ 按难道分从低到高把力扣1700分以下的题刷一遍。早期(800题)没有收集难度分,不刷。注意:如果题目涉及到大学数学和算法,请换种容易理解的解法。没有容易理解的解法,则忽略此题。这样的题几乎不存在。孤立的知识点,难学,易忘,学起来的效率低得惊人。这个难度略低于CSP-J(小学生信息竞赛)。
四,按知识点把力扣1700到2000分的题刷一遍。比如:依次刷 前缀和1700到2000分的题目,二分查找1700到2000分的题目 ⋯ \cdots . 建议按类别刷本文所附的工作级算法。
五,按知识点刷2000到2300分的题。
六,按知识点刷洛谷的题,这一步我还要摸索。

以我在新三版公司的经验,实习生大约要1400分,新手正式员工大约1700分。那刷更高的分数有什么意义呢?
一,在小公司当头目,大约需要2000分。算法只是要求之一,而且非主要要求。
二,进大公司,大约需要2100分。算法只是要求之一,而且非主要要求。大致相当于蓝天杯的水平。
三,当算法工程师。
四,爱好。就像刷怪那样。
五,了解更高难度的算法。方便攻坚时,查询相关资料。
专科生30岁是个坎,本科生37岁是个坎。如果没把握过,建议刷到2100分。这样主考官至少原意和你谈谈。

力扣对新人非常友好:一,直接告诉那个测试用例有问题。二,不需要处理输入输出。
力扣不适合老人:周赛第一题到第三题,难度分跨度大约400分,周赛第四题(困难)难度分跨度大约1200分。难度分相差400分,很难做出来。难度分相差200,能做出来,但花的时间太多。周赛时,无法得分;学习时,效率太低。
入门级(学习级)难度:大致力扣1700分以下。
工作级难度:大致力扣1700到2100分。
困难级难度:大致力扣2100分到2500分。

已经整理的算法

包括电子书、打包源码,难度包括入门级和工作级。
C++算法:前缀和
C++二分查找
C++BFS算法

未整理算法

只包括困难级。
五大算法:分治、动态规划、贪心、回溯、分支界限法。
分治和动态规划都是将问题拆分成若干子问题,分治的子问题往往是相互独立的,动态规划的子问题往往相互依赖。回溯法往往求所有解,而分支限界法往往求任意一个解或最优解。回溯法往往是深度优先,分治界限法往往是广度优先或最优优先。

基本

数组
字符串
排序
矩阵
模拟
枚举
字符串匹配
桶排序
计数排序
基数排序

树上启发式合并
括号 数学表达式

字符串

Z 函数(扩展 KMP)
较难理解的字符串查找算法KMP
前后缀分解。

回文:

中心扩展 马拉车
贡献法
分组:
【状态机dp 状态压缩 分组】1994. 好子集的数目
【动态规划】【前缀和】【分组】2338. 统计理想数组的数目

算法

C++动态规划
C++背包问题
贪心(证明方法:反证法、数学归纳、临项交换、范围缩放、决策包容性) 反悔贪心
C++DFS

折半处理
广度优先搜索
C++回溯
递归
分治
C++记忆化搜索
归并排序
快速选择

基础数据结构

哈希表
键值皆有序哈希映射(见二分查找)

二叉树
堆(优先队列)
C++栈
C++图论
链表
并查集
有序集合
二叉搜索树
队列
拓扑排序
最短路
单调队列
双向链表
最小生成树

欧拉回路
C++差分数组

高级数据结构

前缀树(字典树)
C++线段树
树状数组
后缀数组
C++单调栈
C++图论
强连通分量 双连通分量

技巧

双指针
C++位运算、状态压缩、子集状态压缩汇总

计数
C++算法:滑动窗口总结

哈希函数
滚动哈希
扫描线

数学

基础数学
质数、最大公约数、菲蜀定理
数论
几何
组合数学汇总
博弈
随机化
概率与统计
水塘抽样
拒绝采样

其他

脑筋急转弯

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步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++**实现。

你可能感兴趣的:(#,算法基础,算法,数据结构,c++,动态规划,图论,背包问题,贪心)