1K+ 阅读量
一名销售人员在一个城市,他必须访问所有其他列出的城市,从一个城市到另一个城市的旅行成本也已提供。找到访问所有城市一次并返回到其起始城市的成本最低的路线。在这种情况下,图必须是完整的,因此销售人员可以直接从任何城市前往任何城市。在这里,我们必须找到最小加权哈密顿回路。输入和输出输入:矩阵的成本矩阵。0 20 42 25 30 20 0 30 34 15 42 30 0 10 10 ... 阅读更多
955 阅读量
蓄水池抽样是一种随机算法。在此算法中,从具有 n 个不同项目的列表中选择 k 个项目。我们可以通过创建一个大小为 k 的数组作为蓄水池来解决它。然后随机从主列表中选择一个元素,并将该项目放入蓄水池列表中。当一个项目被选中一次后,它将不会被再次选中。但这种方法效率不高,我们可以通过这种方法增加复杂度。在蓄水池列表中,从列表中复制前 k 个项目,现在从列表中的第 (k+1) 个数字开始,逐个 ... 阅读更多
6K+ 阅读量
数字的奇偶校验基于该数字的二进制等价物中存在的 1 的数量。当存在 1 的数量为奇数时,它返回奇数奇偶校验,对于偶数个 1,它返回偶数奇偶校验。众所周知,计算机内存中的数字存储在二进制数字中,因此我们可以轻松地移位数字。在这种情况下,通过移位位,我们将计算给定数字的二进制等价物中存在的 1 的数量。输入和输出输入:一个数字:5 二进制等价物为 (101) 输出:5 的奇偶校验为奇数。算法finParity(n)输入:数字 ... 阅读更多
2K+ 阅读量
打印给定字符串的所有排列是回溯问题的示例。我们将缩小子字符串的大小以解决子问题,然后再次回溯以从该部分获得另一个排列。例如,如果字符串是 ABC,则所有排列将是 ABC、ACB、BAC、BCA、CAB、CBA。该算法的复杂度为 O(n!)。这是一个巨大的复杂度。当字符串大小增加时,完成任务需要更长的时间。输入和输出输入:字符串“ABC”输出:ABC 的所有排列是:ABC ACB BAC BCA CBA CAB算法stringPermutation(str, left, right)输入:字符串和左 ... 阅读更多
754 阅读量
给定一个不同的锁列表和另一个钥匙列表。我们的任务是从给定的列表中找到锁和钥匙的正确匹配,并在正确时将该钥匙分配给锁。在这种方法中,我们将遍历所有锁并创建一个哈希映射,之后,在哈希映射中搜索每个键。当键匹配时,将其标记为有效键并分配给锁。输入和输出输入:锁和键的列表。lock = { ), @, *, ^, (, %, !, $, &, #} ... 阅读更多
给定一个不同的螺母列表和另一个螺栓列表。我们的任务是从给定的列表中找到螺母和螺栓的正确匹配,并在匹配时将该螺母分配给螺栓。此问题通过快速排序技术解决。通过将螺栓的最后一个元素作为枢轴,重新排列螺母列表并获取螺栓为枢轴元素的螺母的最终位置。对螺母列表进行分区后,我们可以使用选定的螺母对螺栓列表进行分区。对左右子列表执行相同的任务 ... 阅读更多
545 阅读量
让我们考虑给定一个字符串,我们知道字符串是一系列字符。字典序旋转是字符串的旋转,将字符转换为字典序。解决方案很简单,我们只需将给定字符串与其自身连接起来,然后在另一个数组中存储所有字符串的旋转。之后按升序对数组进行排序,最低值即为最终结果。输入和输出输入:字符串“BCAAFAABCD”输出:旋转后的字符串:“AABCDBCAAF”算法minStrRotation(str)输入- 给定的字符串。输出- 需要进行的最小字符串旋转。开始 n := str 的长度 定义 strArr 来存储所有旋转 tempStr := ... 阅读更多
916 阅读量
从一组数据中,该算法将找到数组中第 k 大的元素。此问题可以通过对数组进行排序轻松解决。我们可以按升序或降序对它们进行排序。以降序解决它,我们可以获得前 k 个元素来找到我们的结果。输入和输出输入:数组的元素:{1, 23, 12, 9, 30, 2, 50, 63, 87, 12, 45, 21},K = 4 输出:4 个最大的元素是 87 63 50 45算法kthLargestElement(array, n, k)输入:数组、数组中的元素数量、位置 k。输出:显示最大的 ... 阅读更多
3K+ 阅读量
Jarvis 步进算法用于从给定的一组数据点检测凸包的角点。从数据集的最左点开始,我们通过逆时针旋转将点保持在凸包中。从当前点,我们可以通过检查这些点相对于当前点的方向来选择下一个点。当角度最大时,选择该点。完成所有点后,当下一个点是起点时,停止算法。输入和输出输入:点集:{(-7, 8), (-4, 6), (2, 6), (6, 4), (8, 6), ... 阅读更多
凸包是可以覆盖所有给定数据点的最小封闭区域。格雷厄姆扫描算法将找到凸包的角点。在此算法中,首先选择最低点。该点是凸包的起点。其余 n-1 个顶点根据从起点的逆时针方向排序。如果两个或多个点形成相同的角度,则除了最远的点之外,删除所有相同角度的点。从剩余的点中,将它们推入堆栈。并逐个从堆栈中删除项目, ... 阅读更多