查找排序数组中元素的第一个和最后一个位置2024 年 8 月 29 日 | 4 分钟阅读 在本教程中,我们将解决一个 Python 问题,即在排序数组中查找元素的第一个和最后一个位置。问题陈述是我们给出一个按非递减顺序排序的整数数组,并找到给定目标值的起始和结束位置。 示例 - 示例 2 示例 3 让我们理解以下解决方案。 解决方案 - 1:朴素方法在这种方法中,我们遍历给定数组的元素,检查数组中的元素,并跟踪找到元素的第一个和最后一个出现索引。让我们通过以下示例来理解。 示例 - 输出 [-1, -1] 解释 - 在上面的代码中,我们定义了 find_first_and_last_occurrence() 函数,它接受数组(arr)和目标元素(target)作为输入。我们初始化两个变量 first_occurrence 和 last_occurrence,用于存储目标元素在数组中第一次和最后一次出现的索引。 然后,我们使用 for 循环遍历数组,并检查每个元素是否等于目标。如果我们找到匹配项,并且这是我们第一次遇到目标元素,则更新 first_occurrence 索引。随着我们遍历数组,我们将 last_occurrence 索引不断更新为目标元素的最新出现位置。 最后,我们返回 first_occurrence 和 last_occurrence 索引。 时间复杂度为 O(n),辅助空间为 O(1)。 解决方案 - 2:使用二分查找让我们使用二分查找算法来解决这个问题。 示例 - 在上面的代码中,我们首先定义了两个二分查找函数 find_first_occurrence 和 find_last_occurrence,分别用于查找目标元素在排序数组中第一次和最后一次出现的索引。 然后,find_first_and_last_occurrence 函数使用这两个二分查找函数来获取给定数组中目标元素第一次和最后一次出现的索引。 最后的测试代码演示了如何使用示例排序数组和目标元素来使用该函数,如果找到该元素,则打印第一次和最后一次出现的索引,或者如果数组中不存在该元素,则打印一条消息。 解决方案 - 3要获取第一次出现,第一个二分查找会在数组中查找目标数字的任何一次出现。找到匹配项时,我们记录索引并继续在左子数组中搜索,即当前索引左侧的元素。 在右子数组中,将执行相同的过程来查找数字的最后一次出现。让我们通过以下示例来理解。 示例 - 输出 [3, 4] 解决方案 - 3:使用内置函数让我们理解下面的例子。 示例 - 输出 [3, 4] 解释 - 在此解决方案中,使用 index() 方法查找列表中目标元素第一次出现的索引。要查找最后一次出现,我们再次使用 index(),但这次是对列表的反转版本 (arr[::-1]) 进行操作,然后计算最后一次出现索引相对于原始列表的索引。 下一主题指形查找树数据结构 |
Python的一个关键特性是“类型转换”。它允许程序员将变量或数据从一种数据类型转换为另一种数据类型。它可以实现数据流畅处理。在处理大量数据时,数据以……形式存在时,它会非常有用。
7 分钟阅读
在本教程中,我们将学习深度优先搜索算法并使用 Python 编程语言实现。我们将讨论其基本原理和简单性。该算法用于解决图形相关问题,这将对许多竞争性考试有所帮助。DFS...
阅读 6 分钟
在本教程中,我们将讨论类型提示概念,这有助于提高代码的可读性并增强代码结构。我们将讨论一些类型提示技巧,这些技巧将使 Python 程序更具可读性。众所周知,Python 是一种动态类型编程语言……
阅读9分钟
在本文中,您将学习 Python 中的最长公共前缀。在 Python 中有多种方法可以找到最长公共前缀。但在讨论这些方法之前,您必须了解最长公共前缀。什么是最长公共前缀?最长的字符串是...
阅读 10 分钟
简介:在本文中,我们将讨论 Python linter。每天我们都被各种美好的规则包围着,这些规则让生活轻松很多。例如,司机应该遵守交通规则。因此,每位司机都知道如何在道路上行事以及必须遵守哪些规定……
阅读 6 分钟
今天使用的大多数个人计算机都具有图形用户界面(GUI)。它为具有不同计算机技能水平的用户提供了简单的体验。由于其点选界面,GUI 应用程序可能需要更多资源,但它们通常更易于使用。其中之一...
阅读 6 分钟
条形图是在 Python 中可视化数据的流行方式。它们尤其适用于比较不同类别或组的值。在本教程中,我们将学习如何使用 Matplotlib 库在 Python 中创建条形图(易于进阶)。在此之前...
阅读 4 分钟
面向初学者和高级程序员。在本文中,我们将讨论一些适合所有读者的学习 Django 的优秀书籍。我们将探讨它们的特点、书籍写作风格、示例解释、涵盖的主题以及书中定义的项目数量。在探索书籍之前...
阅读 8 分钟
Python | wxPython 模块 我们都曾想过,是什么让一个应用程序在第一时间就与众不同并具有吸引力?如果我们中有人想到的是应用程序的用户界面,是的,我们是对的。应用程序的用户界面产生了巨大的差异...
7 分钟阅读
我们都一定听说过网络抓取以及如何使用网络抓取从网站上抓取信息。网络抓取非常重要,因为它帮助我们从网页或网站获取所有有用的信息,并且我们可以获取我们想要的任何信息...
阅读 10 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India