不太灵光的程序员
机试题专栏 题目来自牛客平台机考同学的机试分享,题目描述信息可能记录不完整,题解无法保证通过率,只提供结题思路,注意!注意!!不要直接使用博主代码进行机考!
展开
-
【算法基础】并查集
操作中,我们首先需要找到x和y所在的集合的根节点px和py,以及它们到根节点路径上的权值wx和wy。操作中,如果当前节点不是根节点,就递归地寻找其根节点,并将路径上的每个节点的权值累加到当前节点上。函数中,如果找到了x的父节点不是x,就将x的父节点改为它的根节点,这样就将路径上的所有节点都指向根节点,从而实现路径压缩。在这个实现中,我们使用两个数组分别记录每个元素的父节点和秩(即树的高度),初始时每个元素的父节点都是它自己,秩为0。操作先查找x和y所在的集合的根节点,如果它们已经在同一个集合中,直接返回;原创 2023-04-10 21:58:49 · 799 阅读 · 0 评论 -
【算法基础】算法复杂度
时间复杂度通常用大O符号表示,具体来说,如果一个算法的时间复杂度为O(f(n)),那么它执行所需的时间最多是f(n)的某个常数倍,其中n是输入规模。空间复杂度通常也用大O符号表示,具体来说,如果一个算法的空间复杂度为O(f(n)),那么它执行所需的额外空间最多是f(n)的某个常数倍,其中n是输入规模。其中,每次递归调用需要执行两次递归操作,因此时间复杂度可以用递归式表示为T(n) = T(n-1) + T(n-2) + O(1),解递归式可以得到时间复杂度为O(2^n)。原创 2023-04-10 21:52:46 · 714 阅读 · 0 评论 -
【华为机试 Python实现】图的遍历
未被访问的领接顶点,领接顶点都访问结束后,再从一个领接点发起广度度优先搜索遍历,直至图中所有和有路径想通的顶点都被访问到。今天我们了解了图的遍历方式,分为深度优先搜索和广度优先搜索,明天我们学习最小生成树问题、最短路径问题,我们希望从图中某一顶点出发遍历图中其余顶点,且使每一个顶点仅被访问一次。图的任意一顶点都可能与其他顶点相连,在遍历图时,可能沿着一条路径遍历下来,又回到了原顶点。为了避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已经访问过的顶点。,到这里图的所有顶点都被访问到。原创 2022-11-03 23:18:00 · 1316 阅读 · 0 评论 -
【华为机试 Python实现】图的存储结构
可以发现使用二维数据实现领接矩阵,如果是一个稳定的图,即不需要频繁新增顶点的图是还可以,如果再删除顶点后如果要同时删除存储空间,重建二维数据还是比较麻烦的,不重建又导致有大量的空间浪费。我们以输入n表示顶点个数, data = [(0, 1), (0, 3), (1, 2), (2, 0)] 表示一个图,0,1,2,3表示顶点,(0,1)表示边。无向图中顶点间的关系是无序的,(V1,V2)即表示V1和V2的一条边;顶点是一个对象,顶点有一个领接顶点属性,存储所有与顶点相领的其他顶点;原创 2022-10-22 22:10:07 · 1713 阅读 · 7 评论 -
二、Java基础语法
这里需要注意的是,短路操作,比如或操作,会从左向右依次进行比较,有结果为真时整个条件为真就会直接跳出,不在对后面表达式进行比较;,用于判断两个数据之间的大小关系,计算结果为boolean值,如果成立返回为true,否则为false。这里介绍的术语仅限可以解基础算法题目,随着题目的不断难度增加再去学习进阶语法,解决更复杂的问题。输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开),与是必须同时为真条件为真,或是一真条件为真,非是条件取反。支持 if 、if…原创 2022-09-23 01:19:42 · 266 阅读 · 0 评论 -
【数据结构基础】栈
【数据结构基础】是博主学习Java之余的一些记录,博主希望通过使用Java实现基本的数据结构,来学习、掌握Java的基本语法以解答常见的算法问题,对Java的使用还处于入门阶段,使用不当的地方希望得到指正。原创 2022-09-22 00:22:42 · 825 阅读 · 2 评论 -
一、Java语言简介
Java介于编译型语言和解释型语言之间。编译型语言如C、C++,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行效率太低。Java 编程语言平台提供了一种可移植的、 解释的、 高性能的、 简单的、 面向对象的编程语言和支持的运行时环境。简单是 Java 最重要的设计目标之一。原创 2022-09-22 00:28:59 · 471 阅读 · 0 评论