【数据结构与算法】- 周测二

驭风计划由清华大学教师团队授课,包括机器学习、深度学习、计算机语言和数据结构与算法四门课程。课程提供代码仓库,涵盖了贪心、分治、图搜索等算法。文章中列举了三个编程任务,涉及无向图点权最大值路径问题、图的构建及计算特定数值的后三位数字。作者承诺可提供完整报告和代码,并欢迎讨论交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

课程链接: 清华大学驭风计划

代码仓库:Victor94-king/MachineLearning: MachineLearning basic introduction (github.com)


驭风计划是由清华大学老师教授的,其分为四门课,包括: 机器学习(张敏教授) , 深度学习(胡晓林教授), 计算机语言(刘知远教授) 以及数据结构与算法(邓俊辉教授)。本人是综合成绩第一名,除了数据结构与算法其他单科均为第一名。代码和报告均为本人自己实现,由于篇幅限制,只展示任务布置以及关键代码,如果需要报告或者代码可以私聊博主



数据结构与算法部分授课老师为邓俊辉教授,主要通过从贪心,分治,图搜索,动态规划 , 散列表, 计算几何入门数据结构与算法


有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~



任务一

题目描述

一个无向图有 n 个点,m 条边。每个点 i 都有一个点权,记为 wi。

询问给定两个点 s 和 t,求以 s 为起点 t 为终点的所有可能路径中,路径上的点权的最大值的最小值。如果不存在从 s 到 t 的通路,则输出 -1。

输入格式

第一行两个正整数 n,m。

第二行 n 个正整数,代表 n 个点的点权,用空格隔开。

接下来 m 行,每行两个整数u,v(1 ≤ u,v ≤ n),表示点 u 和点 v 之间有一条无向边。

接下来一行两个整数s,t,意义同描述。

输入保证无重边、自环。

输出格式

输出一行一个整数,表示询问的答案。



任务二

题目描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gTtiGVNl-1684708562997)(image/hw2/1684734762475.png)]

输入格式

从标准输入读入数据。

输入第一行为三个整数 n,m,k,分别表示 V,E 的大小,与题目描述中提及的给出的参数 k

接下来 m 行依次描述每条边,其中第 i 行为三个整数ui ,vi ,wi,表示点ui ,vi 之间有一条权值为 wi 的无向边。

输出格式

输出到标准输出。

输出一行一个非负整数,表示所求答案



任务三

题目描述

计算 ab(也就是 a 的 b 次方)的后 3 位数字。

输入格式

第一行为一个整数 T,表示数据的组数。

接下来每行两个整数,分别表示 a 和 b。

输入格式

输出 T 行,表示 ab 的后三位数字(去掉前导 0)。



<think>好的,用户想学习Java相关的数据结构算法,需要学习资料和教程。首先,我需要整理已有的引用内容,看看哪些资源可以直接推荐。引用1提到动力节的教程,专为Java程序员设计,适合新手,应该重推荐。引用2和3是学习笔记和Java版的内容,可以作为补充材料。引用4详细介绍了数据结构的基础知识,可以结合这些概念来推荐系统化学习的资源。 用户可能对如何开始学习、选择哪些资料有疑问。需要分步骤建议,比如先基础理论,再结合实践。同时,用户可能希望了解学习路径,比如先学数据结构再学算法。还要考虑是否需要书籍推荐,比如《算法导论》或《算法(第4版)》,这些经典书籍虽然不专为Java,但理论部分通用,可以配合Java实现来学习。 另外,用户可能需要知道学习重,比如时间复杂度和空间复杂度分析,以及常见数据结构如数组、链表、树的应用。实践部分,建议刷题平台如LeetCode,用Java实现算法题。还要注意引用中的线程安全、有序集合等内容,可能在Java集合框架中有涉及,可以推荐官方文档和源码分析。 需要确保回答结构清晰,分列出教程、书籍、在线资源、学习建议等。同时,根据用户的问题生成相关的问题,比如如何分析算法复杂度,或者如何应用数据结构解决实际问题。最后,检查是否符合系统级指令,比如数学公式的格式和引用标识的正确添加。</think>### Java数据结构算法学习指南 #### 一、系统化学习资源推荐 1. **动力节教程** 适合零基础学习,包含完整的Java实现代码算法动画演示,重讲解数组、链表、栈、队列、树等核心数据结构的实现原理[^1]。 示例代码片段: ```java // 链表节定义 class Node { int data; Node next; Node(int data) { this.data = data; } } ``` 2. **Java版教材配套资源** 推荐《数据结构算法分析:Java语言描述》(Mark Allen Weiss著),配套源码覆盖排序算法(如快速排序$O(n \log n)$)、图算法等复杂场景[^3]。 3. **官方文档延伸** Java集合框架源码(如`ArrayList`基于数组,`HashMap`使用数组+链表/红黑树)是绝佳学习材料,可通过调试工具观察动态扩容过程。 #### 、分阶段学习路径 $$T(n) = aT(n/b) + f(n) \quad (\text{分治算法复杂度分析})$$ 1. **基础阶段(2-3)** -掌握线性结构:数组、链表、栈、队列 - 学习排序算法实现复杂度对比(冒泡排序$O(n^2)$ vs 归并排序$O(n \log n)$) 2. **进阶阶段(4-6)** - 树结构:叉树遍历、AVL树旋转操作 -算法:Dijkstra最短路径、拓扑排序 - 动态规划经典问题(背包问题状态转移方程) #### 三、实践提升方法 1. **LeetCode专项训练** 建议按标签练习(如链表操作、回溯算法),推荐题目: - 《反转链表》(递归/迭代两种实现) -叉树层序遍历》(队列应用) 2. **项目实战案例** 尝试用优先队列实现任务调度系统,体会堆数据结构的实际应用场景[^2]。 #### 四、辅助工具推荐 - **Visualgo**:算法可视化平台(含Java代码示例) - **JUnit**:编写试用例验证数据结构实现正确性 - **JProfiler**:分析算法时间/空间复杂度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼城周杰伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值