使用 Python 查找具有相同概率的最大出现元素索引2025年2月13日 | 阅读 5 分钟 在下面的教程中,我们将学习如何使用 Python 编程语言找到列表中出现概率相等的最大出现元素的索引。 那么,让我们开始吧。 理解问题给定一个重复元素的列表,我们需要找到出现概率相等的最大出现元素的索引。假设我们有一个包含多个元素的数组 {1, 2, 2, 5, 3, 6, 2, 4, 5, 3, 4, 1, 6, 2, 6, 9, 8, 1, 2, 5}。在此数组中,元素 2 出现了五次,索引号分别为 1、2、6、13 和 18。此问题的解决方案以相等的概率随机返回其一个索引。如果数组包含两个最大出现次数,则解决方案应考虑第一个最大出现次数。 让我们看一个例子,演示输入数组及其相应的可能输出。 示例输入 given_array = [1, 2, 2, 5, 3, 6, 2, 4, 5, 3, 4, 1, 6, 2, 6, 9, 8, 1, 2, 5] 输出 2 是出现频率最大的元素,位于索引号:1 或 2 是出现频率最大的元素,位于索引号:2 或 2 是出现频率最大的元素,位于索引号:6 或 2 是出现频率最大的元素,位于索引号:13 或 2 是出现频率最大的元素,位于索引号:18 所有这些输出都具有相等的概率。 理解解决问题的算法为了解决这个问题,我们将遵循一个简单的方案。我们将首先遍历数组一次,找到出现频率最大的元素及其频率 n。然后,我们将生成一个介于 1 和 n 之间的随机数 k,并返回数组中出现频率最大的元素的第 k 次出现。 现在让我们通过下面讨论的算法来理解这种方法 算法步骤 1:我们将定义一个函数,该函数将一个数组作为参数。 步骤 2:在此函数内部,我们将记录字典中所有输入元素的计数。 步骤 3:然后,我们将创建一个 for 循环。 步骤 4:我们将遍历字典。 步骤 5:然后,我们将找出哪个元素首先出现次数最多。 步骤 6:然后,我们将生成一个介于 1 和元素在字典中出现次数之间的随机数。 步骤 7:最后,我们将返回生成的数字作为最大出现元素的索引。 问题解决方案既然我们已经理解了算法,现在是时候在下面的 Python 程序中实现了,以便找到出现概率相等的最大出现元素的索引。 代码 输出 Given Array : [1, 2, 2, 5, 3, 6, 2, 4, 5, 3, 4, 1, 6, 2, 6, 9, 8, 1, 2, 5] 2 is the Maximum Occurring Element, present at index: 13 说明 在上面的代码片段中,我们导入了所需的库,并定义了一个名为 findMaxOccurringElement() 的函数,该函数接受一个数组作为参数。在此函数内部,我们计算了数组的长度并创建了一个空字典。然后,我们遍历了字典,并根据数组的元素进行了更新。然后,我们初始化了两个变量 - MAX_ELEMENT 和 MAX_SO_FAR - 为可能的最小整数值,表示最大出现元素及其总出现次数。然后,我们遍历了字典,并用当前最大元素及其总频率更新了变量的值。之后,我们生成了一个介于 1 和最大出现元素总频率之间的随机数 k。然后,我们遍历了数组,并打印了该元素第 k 次出现的位置。 对于主函数,我们初始化了给定的数组,为了参考打印了它,并调用了定义的函数来查找出现概率相等的最大出现元素。 结果是,元素 2 在数组 - [1, 2, 2, 5, 3, 6, 2, 4, 5, 3, 4, 1, 6, 2, 6, 9, 8, 1, 2, 5] - 中出现次数最多,其索引值为 13。 所提出解决方案的时间复杂度为 O(n),其中 n 是输入大小。它需要 O(n) 的额外空间用于字典。 结论在上面的教程中,我们已经通过 Python 编程语言学习了查找出现概率相等的最大出现元素的索引的方法。我们已经研究了字典如何帮助我们存储每个元素的出现次数,以及如何使用 random 模块的 randrange() 方法。我们用来解决给定问题的方法很简单,时间复杂度为 O(n);但是,人们可以使用不同的方法来更轻松、更有效地解决此问题。 |
在本教程中,我们将学习如何检查给定的数字是否为斐波那契数。在这里,我们有一个数字“n”,我们必须检查它是否为斐波那契数。斐波那契数列的起始数字是:0, 1, 1, 2, 3,...
阅读 3 分钟
企业在全球范围内使用 Python 构建 Web 应用程序、分析数据、通过 DevOps 自动化操作以及构建可靠、可扩展的企业应用程序。Python.org 的维基上列出了大量使用 Python 的公司,Real Python 的博客上也有许多主要由 Python 驱动的公司的完整介绍。无论是用于...
阅读 8 分钟
在本教程中,我们将讨论如何获取两个列表的交集。两个列表的交集意味着我们需要获取两个初始列表中所有共同的元素。Python 以其出色的内置数据结构而闻名。Python 列表...
阅读 3 分钟
?如果你渴望在机器学习领域获得成功的职业生涯,让我们向你介绍另一个有趣的包,它的功能会让你惊叹不已。那么,让我们看看 statsmodels 是什么以及它有哪些功能?Statsmodels 是 Python 中一个流行的库,它使得...
阅读 3 分钟
Python 数组和列表是 Python 的重要数据结构。列表和数组都用于在 Python 中存储数据。这些数据结构允许我们进行索引、切片和迭代。但它们彼此之间略有不同。在本教程中,...
阅读 3 分钟
?在 Python 中,您可以使用内置函数 len 或将字典与空字典 {} 进行比较来检查字典是否为空。以下是检查字典是否为空的两种方法: 方法 1:使用 len 函数 d = {} 如果 len(d) == 0: print("The...")
阅读 2 分钟
Python 的 signal 模块是标准库的一部分,它提供了处理信号的机制,信号是发送到正在运行的程序的中断。信号可用于多种目的,例如进程间通信、错误处理和超时实现。signal 模块...
阅读 17 分钟
众所周知,Python 是一种面向对象的编程语言。因此,Python 遵循 OOP 的所有概念,其中一个概念就是继承。在使用继承概念时,我们可以在继承的类中使用 super() 函数来引用父类...
阅读 4 分钟
什么是 SMOTE?合成少数过采样 (SMOTE) 过程增加了用于人工智能的信息数据集中较少引入的案例数量。这是一种通过复制现有案例来增加案例数量的更好方法。当我们需要处理...
5 分钟阅读
使用 Python 列表数据结构,我们可以将多种数据类型的项存储在有序序列中。方括号 ([]) 用于封装数据,而逗号用于分隔条目(,)。Python 提供了许多方法来帮助我们删除特定项……
7 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India