
算法
烈风逍遥
这个作者很懒,什么都没留下…
展开
-
Linux发行版的数量(图的遍历)
这种基于深度优先搜索或者广度优先搜索的算法很实用,因为它可以用于解决各种图的问题,比如求图的连通分量数量,求图的最大连通子图,检测图是否存在环等等。具体来说,我们首先遍历每一个节点,如果这个节点没有被访问过,那么我们就从这个节点出发,进行一次深度优先搜索或者广度优先搜索,每访问到一个节点,我们就把这个节点标记为已访问,同时计数器加1,然后再去访问所有与它直接相连并且还没有被访问过的节点。时间复杂度上,我们需要遍历所有的节点和边,因此时间复杂度是O(n^2),其中n是节点的数量。第一行输入发行版的总数量N,原创 2023-07-29 15:25:24 · 297 阅读 · 0 评论 -
动态规划思想求最小步数
这个问题是一个典型的动态规划问题,主要解决的是如何从0点到达n点的最小步数。每次移动只能是2步或3步,且可以向左或向右移动。虽然可以向左移动,但从0点开始,向右移动到达任何非负整数点n总是更快的,所以我们的目标是寻找最小步数来到达非负整数n。求从坐标零点到坐标n的最小步数,一次只能沿横坐标轴向左或向右移动2或3。注意:途经的坐标可以为负数。解法优化,n的范围是1到10的9次方,n较大时,使用递归可能栈溢出。从坐标零点移动到4,最小需要两步,即向右移2步,再向右移2步。输出从坐标零点移动到坐标n的移动步数。原创 2023-07-28 10:28:32 · 443 阅读 · 0 评论 -
机试算法题-全排列
分析:以示例二为例,统计各字符出现的次数,A-2, B-1, C-1, D-1, E-1, F-1, G-1, H-2。给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。如:S为ABA,则不同的排列有ABA、AAB、BAA三种。输入一个长度不超过10的字符串S,我们确保都是大写的。输出S重新排列的所有不相同的排列数(包含自己本身)。原创 2023-07-27 20:43:16 · 498 阅读 · 0 评论 -
JS将数组转化为对象结构
解法二:运用JavaScript中的map思想求解。map方法:对数组每一项都运行传入的函数,返回由。解法一:运用递归思想求解。原创 2023-07-25 16:42:38 · 504 阅读 · 0 评论 -
用多种方式实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci)1202年以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:f1= 1、f2= 1、fn= fn-1+ fn-2(n>2)原创 2023-07-24 20:43:41 · 70 阅读 · 0 评论