当前位置: 首页 > news >正文

假期学习总结(25.2.19)

假期自习的最后一天。

这个假期学习的东西先罗列一遍,每个知识的掌握程度。

假期自习的其他收获和感想,之后学习的目标。


橙色表示题目重点

蓝色表示步骤

绿色表示重点


目录

1.dfs,bfs

2.并查集

3.队列

4.栈

5.二叉树

6.背包问题

7.前缀和数组,差分数组

8.java的基础语法

9.没学的,要补的

10.假期自习感想


学习的东西(顺序不是学习的先后顺序):

1.dfs,bfs

这里重点是讲bfs,因为之前一直没有搞明白,不明白它的解题思想是什么。

bfs和dfs的不同是bfs是一层一层的遍历搜索,而dfs是利用递归一搜到底再返回再搜

看到很多博客在讲了bfs的思想之后,写的代码例子,模板都是C++搞的,所以还是有点不知道C语言的模板的具体代码,但是看了一个小破站的讲解视频,代码还是比较清晰的,距离拿捏bfs又近了一步...

bfs解题时,有三个重要的部分,一个是输入数组,其实也就是一个图。二是标记数组(bool类型)用来判断是否已经被查过,三是需要用队列来辅助实现bfs

整体思路就是在构建的bfs函数中,标记顶点表示已经访问,然后再将顶点入队,再用一个while循环(循环条件是队列是否为空,如果是空的话就不进入循环),在while循环的内部:队头出队再用一个for循环查找顶点的邻接顶点(判断条件是是否出界和是否被访问过),标记邻接顶点再将邻接顶点统统入队。  然后就是再去上面的while循环。。。

2.并查集

这个知识我的印象特别深,感觉是学的最爽的一个数据结构的知识了,还得是一篇绝世好博客讲解的通透,再次摆出这位大佬写的超绝博客----->【算法与数据结构】—— 并查集-CSDN博客

并查集的重点部分也特别清晰。

首先,并查集有俩操作,一为合并,二为查询

我们需要数组记录前驱节点,也可以形象化为老大,合并操作就是将需要合并的两个数的老大统一一下,查询就是找到这个数的老大。

查询就用一个find函数,基于当pre[ x ]==x的情况就代表找到老大,可以用一个while循环,一直往上一级查,直到找到最终的老大。这里还涉及到一个find函数的优化,就是实现路径压缩,降低时间复杂度,可以将往上查的路上的所有的节点的上一级直接设置为最终的老大,这样之后就不用再浪费时间继续一层一层往上查。

合并就是用一个join函数,分别将传入的数找到他们对应的老大(这里就可以直接用find函数),然后随机安排一个根节点为合并后的老大即可。

3.队列

队列的话,我只学了单调队列,还有其他的类型我并没有写过题目(加入后续学习计划)。

4.栈

利用栈去解决问题,重点部分就是栈的创建栈指针(这里的栈指针也强调过很多次实际上不是实际意义上的指针),C语言的话,需要我们用数组去模拟一个栈,然后用栈指针,按照题目要求指向栈顶和栈底,方便操作。

这里有之前复习栈的时候自己写的总结,之后复习也非常方便:

25.2.3 【洛谷】作为栈的复习不错(学习记录)-CSDN博客

5.二叉树

二叉树我自己感觉写题目的时候比较难,基础的知识部分就是根,左子树,右子树。用C语言去构建一棵树的方法也是必备。需要动态为树分配空间创建节点数组用结构体构建一颗树类型,里面包含根节点,左子树,右子树的内容。

有两个我认为的二叉树的基础问题,一是求一颗二叉树的深度,二是将一颗二叉树按照前序(中序,后序)遍历并输出(只写过前序遍历,而且因为二叉树掌握的还不太熟练,写前序遍历的时候挺磕磕绊绊的,前序遍历用递归完成)。

这里是我自己写的一个C语言构建二叉树的模版:

二叉树实现(学习记录)-CSDN博客

6.背包问题

01背包,完全背包。(上次考试出的事部分背包和分组背包,完全不会,但是还没去补这方面的知识,划入学习计划。)

背包问题的核心是利用数组表示可以获得的最大价值(根据题目要求,也可能是其他含义,但其实都一样),核心的核心是找到正确的状态转移方程,我们可以根据两个状态每次会产生的情况去创建方程,放物品,不放物品每次价值有什么变化,我们最后需要的是这两种情况中能够得到的价值更大的那一种情况。

7.前缀和数组,差分数组

前缀和数组的作用其实就是保存了每个n的前n项和。差分数组的目的是为了方便区间整体连续的加减操作,更新正确的数值情况

这俩弄的还是比较明白的,之前写的总结博客也写的比较清晰,复习自用:

【算法】并查集,前缀和数组,差分数组(学习记录)-CSDN博客

8.java的基础语法

之前的总结也有java语法的学习情况,不做详细总结,只举出这个学习内容。

9.没学的,要补的

看了一下算法书,桶排序这个东西还没搞过,还有最短路径好像也没搞过。

还没学完所有内容的:

二叉树

背包------>部分背包,分组背包

队列------->除了单调队列

排序-------->桶排序,快速排序

链表(这个好像没明白压根,老是将队列,栈,链表搞在一起)

10.假期自习感想

感觉收获还是蛮多的,其实一开始学数据结构真的觉得学不会,特别是写一个题目要写一晚上,写了又错,思路错了还好,多看看大佬的代码和思路(其实这个也很难,只不过至少有东西在那让我思考吧),如果是代码思路也是对的,就是个别地方错了,就要调试很久代码(当然这是在我没有ai检查代码问题之前,如果自己调试代码实在是搞不出来哪里错了,就会去问ai,之前还问老师,然后发现其实问代码细节错误,让别人找纯纯为难别人。。。)

感觉学数据结构最重要的就是了解为什么要用到这个数据结构解题这个数据结构是怎么一个思路最后才是怎么用代码实现思路。(明白逻辑思路之后,其实代码能很快理解,但其实两个结合起来学,好像学的更快。。。

之后的学习目标自然是数据结构学透赶课(java)

要开学了,加油加油!!!

相关文章:

  • Ubuntu USB耳机找不到设备解决
  • 力士乐伺服电机MSK系列型号
  • 初识Redis
  • DeepSeek 解析
  • 深入理解 lua_KFunction 和 lua_CFunction
  • 网络安全java练习平台 js网络安全
  • 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)
  • 【Linux】【网络】Libevent整个的使用流程总结(与接口函数结合)
  • 关于SOC与CPU的那些事
  • 网络安全钓鱼邮件测试 网络安全 钓鱼
  • React之旅-03 路由
  • Qt学习(五)自定义对话框,多窗口开发---添加设计师类, MDI多窗口开发
  • ARM TCM(itcm和dtcm)
  • 如何用ollama快速布署deepseek-r1大模型
  • 学习数据结构(11)二叉树(堆)下
  • tauri-plugin-http插件暂时不支持流传输Streaming,所以大模型的流传输就难了,所以还是用js的请求吧
  • Elasticsearch7.1.1 配置密码和SSL证书
  • 从猜想终结到算法革新,弹性哈希开启数据存储新篇章
  • 【科研绘图系列】R语言绘制SCI论文图合集
  • 飞行器的,偏航角,俯仰角,横滚角,的图解。加动图演示。
  • 外企聊营商|上海仲裁:化解跨国企业纠纷的“上海路径”
  • 国家统计局:2024年城镇单位就业人员工资平稳增长
  • 刘国中将出席第78届世界卫生大会并顺访瑞士、访问白俄罗斯
  • 李成钢出席中国与《数字经济伙伴关系协定》成员部级会议
  • 师爷、文士、畸人:会稽范啸风及其著述
  • 音乐节困于流量