Python解决方案:计算排序数组中某个元素的出现次数2025年1月5日 | 阅读8分钟 在此问题中,我们给定一个整数排序数组。我们需要找到给定数字在给定数组中重复的次数。 让我们看一些例子来理解这个问题 输入: 数组 = {1, 1, 1, 1, 3, 3, 4}, x = 1 输出: 4 整数 x 在给定数组中出现 4 次 输入: 数组 = {1, 2, 2, 3, 4, 4, 5, 5}, x = 2 输出 2 输入: 数组 = {1, 2, 2, 3, 4, 4, 5, 5}, x = 3 输出 1 输入: 数组 = {1, 2, 2, 3, 4, 4, 5, 5}, x = 6 输出 -1 整数 6 不存在于给定数组中 方法 - 1在此方法中,我们将使用线性搜索来计算给定整数在数组中重复的次数。我们可以使用线性循环遍历数组中的元素,并维护一个变量来计算特定数字的出现次数。 代码 输出 The frequency of 2 is 2 时间复杂度: 此方法的时间复杂度是线性的,因为我们使用了线性循环来遍历数组的元素。因此,时间复杂度为 O(n)。 空间复杂度: 我们没有使用额外的空间来解决这个问题;因此,空间复杂度是常数 O(1)。 方法 - 2在此方法中,我们将使用二分查找算法来解决此问题。我们将找到 x 的索引,并使用 for 循环计算索引左侧和右侧的出现次数。 代码 输出 The frequency of 2 is 2 时间复杂度: 程序将花费 log n 的时间复杂度使用二分查找搜索元素 x,然后花费线性时间 O(c) 来计算出现次数。因此,该程序的最终时间复杂度为 O(log n + c),其中 c 是出现次数。 空间复杂度: 由于二分查找的递归堆栈,此方法的空间复杂度为 O(log n)。 方法 - 3在此方法中,我们也使用二分查找算法。但是,我们将优化该算法以充分利用二分查找算法。以下是我们为解决此问题将遵循的步骤 我们将创建一个函数来对给定的排序数组执行二分查找算法。此函数将返回数组中给定元素 x 的第一次出现索引。 我们将定义另一个函数来执行二分查找算法。此函数将返回元素 x 在数组中最后一次出现索引。 最后,我们将创建一个函数来调用这两个函数并返回出现次数。 代码 输出 The frequency of 2 is 2 时间复杂度: 我们使用二分查找两次来查找第一次和最后一次出现索引,这需要 O(Log n) 的时间。除了二分查找,我们没有使用任何其他循环;因此,最终时间复杂度为 O(log n)。 辅助空间: 我们没有使用任何额外的空间,因此空间复杂度是常数,即 O(1)。 方法 - 4我们将使用内置的 Python count() 函数来查找元素 x 的频率。 代码 输出 The frequency of 2 is 2 时间复杂度: count 函数的时间复杂度为 O(n)。因此,该程序的最终时间复杂度为 O(n)。 辅助空间: 我们没有使用任何额外的空间;因此,空间复杂度是常数,即 O(1)。 方法 - 5在此方法中,我们将使用哈希方法来计算给定排序数组中 x 的出现次数。在 Python 中,我们可以使用内置字典数据结构来使用哈希技术。 我们将遵循以下步骤创建程序。 我们将首先初始化一个空字典。我们将此字典称为 map。我们将在此字典中存储所有元素的频率。因此,此字典将是一个无序的列表,包含给定排序数组的元素,映射到该排序数组中特定元素的频率。 现在,我们将遍历排序数组并将频率存储在 map 中。 然后,我们将使用 find() 方法在无序 map 中查找元素 x,从而找到键 x 的值,即 x 在给定排序数组中的出现次数。 代码 输出 The frequency of 2 is 2 时间复杂度: 我们使用线性循环遍历数组并将每个元素的频率存储在字典中;因此,时间复杂度是线性的,即 O(n),其中 n 是排序数组的长度 辅助空间: 我们使用字典来存储元素的频率;因此,空间复杂度为 O(k),其中 k 是排序数组中不同元素的数量。 |
? 在 Python 中记录异常是改进编程的关键部分,它有助于设计师有效地识别和解决代码中的问题。在本详尽的助手(可能是指指南)中,我们将研究 Python 中异常记录的各个方面,涵盖主要概念、最佳实践和高级方法。到...
7 分钟阅读
TypeScript 和 Python 简介 TypeScript 和 Python 都是流行的编程语言,但用途不同。TypeScript 是一种静态类型语言,它构建在 JavaScript 之上,主要用于 Web 开发。它提供了强类型、接口和改进的工具,使代码更易于管理...(此段落未提供完整的英文原文,故翻译不完整)
阅读 12 分钟
Python playsound 模块简介 playsound 模块是一个轻量级、用户友好的音频文件播放库。设置非常简单,API 也相对直接。它非常适合开发人员将基本声音播放功能集成到 Python 脚本或应用程序中。根据是否……
阅读9分钟
随着我们越来越接近现代,在线支付的做法变得越来越流行。在线支付对客户特别有利,因为它消除了免费资金的问题并节省了时间。此外,我们不需要货币来...
阅读 8 分钟
图是一种数据结构,它表示一组称为节点(或顶点)的组件之间的链接或连接。这些联系被称为边。在计算机科学中,图通常用于表示各种现实世界的问题,包括社交网络、计算机系统等...
5 分钟阅读
简介 Python 是一种流行的编程语言,以其简洁性和可读性而闻名。使 Python 如此多功能的一个关键特性是其包管理系统。Python 包是模块和库的集合,允许开发人员扩展语言的功能。一个重要的...
阅读 3 分钟
《猜字游戏》:想象一下您可能和朋友一起玩的经典猜词游戏。一个人选择一个单词或几个单词,其他人必须在一定次数的尝试中猜出它是什么。这是一个快速、简单且具有教育意义的游戏,通常...
21 分钟阅读
矩阵或数组求逆是线性代数中的一项关键运算,是众多计算和数学任务的基础。其核心在于,该过程旨在找到给定矩阵或数组的倒数对应物,从而实现一个可以返回原始值的逆变换...
7 分钟阅读
? 在 Python 中,用于处理正则表达式的 re 模块通常与 search() 方法相关联。您将使用正则表达式来搜索字符串中的模式。re.search() 函数会在字符串中搜索任何匹配正则表达式模式的地方。导入 re...
阅读 4 分钟
引言:在本教程中,我们将学习 Bash Python。如果您使用一个大型函数,您将间接与 Bash 交互。如果您使用 Ubuntu、Linux Mint 或其他 Linux 发行版,那么每次使用终端时,您都会与 Bash 交互……
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India