两个和问题:给定列表的两个和问题 Python 解决方案2024 年 8 月 29 日 | 5 分钟阅读 在本教程中,我们将使用 Python 代码来实现两数之和问题。这是数组的基本问题,您可以在 Leetcode 上找到它。我们将使用 Python 编程语言通过不同的方法来解决它。让我们理解问题陈述。 问题陈述在此问题中,我们需要从给定的列表中找到两个元素的对,它们的和等于给定的目标值。我们可以假设数组只有一个整数对加起来等于目标和。 注意 - 给定的列表或数组必须按递增顺序排序。示例 - 1 输出 [1, 5] 示例 - 2 输出 [2, 3] 让我们使用暴力方法解决这个问题。 方法 - 1:暴力方法暴力方法是解决该问题的一种常用方法。在此方法中,我们的主要目标是解决问题,而不是高效地解决。我们检查每一对可能的组合,以及数组中可能的组合数量。我们将使用两个 for 循环,将两个值相加,并与目标值进行比较。如果它等于目标值,则返回整数对的索引。 算法 -
让我们使用 Python 代码来实现该算法。 两数之和问题实现示例 - 输出 [0, 3] 解释 - 在上面的程序中,我们创建了 TwoSum 类并初始化了两个变量 list1 和 target。然后,我们声明了 solution() 方法,在该方法中,我们首先检查列表的长度并应用了两个 for 循环。第一个 for 循环用于维护第一个索引,第二个 for 循环用于维护第二个索引。我们检查两个值的总和;如果为真;我们分配了一个新列表并返回了元素的索引。 示例 - 2 输出 [1, 2] 方法 - 2:使用字典输出 [1, 0] 解释 - 在此方法中,我们创建了 TwoSum 类,并在其中声明了 **solution()** 方法。在此方法中,我们声明了一个字典来跟踪迄今为止在值到索引中的所有值。现在,我们使用 enumerate 迭代给定的列表。然后,我们将 **num** 值从目标值中减去以搜索其对。如果找到对,则返回两个数字的索引。否则,将其添加到我们的字典中以供将来访问。 两数之和的时间复杂度(暴力方法)我们需要使用两个 for 循环。第一个 for 循环访问 n 个元素,第二个 for 循环访问 n-1 个元素。因此,对于可能和总的对数的检查是:N*(N-1)/2,时间复杂度将是 O(N*N) = N2。 空间复杂度 0(1):只为变量使用了恒定空间。 使用字典,只需要一个 for 循环,因此时间复杂度将是 O(N)。 方法 - 3:使用双指针在此方法中,我们将使用二分搜索算法,其中给定的列表数组必须已排序。我们需要固定第一个索引,然后在列表中找到满足目标的必需值。 我们将使用两个指针:left 和 right;left 指示第一个元素,right 指示列表的最后一个元素。然后我们比较指针值的和与目标值的和;如果值之和等于目标值,则返回指针索引对。如果值之和大于目标值,则我们将 right 指针减一。否则,值之和小于目标值;我们需要将 left 指针增加一并检查相同的条件。 让我们理解下面的例子。 示例 - 输出 [2, 3] 使用两数之和的时间复杂度即使在最坏的情况下,时间复杂度也将是 O(n),因为我们只访问数组中的所有元素一次。 空间复杂度 0(1):只为变量使用了恒定空间。 使用字典,只需要一个 for 循环,因此时间复杂度将是 O(n)。 结论这是面试中基本且经常被问到的编程问题。在本教程中,我们介绍了解决两数之和问题的三种方法。我们建议独立实现上述方法,并练习此类问题以成功应对编码面试。 |
Python 提供了最受欢迎的绘图库之一 Matplotlib。它是开源的、跨平台的,用于制作二维图表。它通常用于数据可视化和通过各种图表进行表示。Matplotlib 最初由 John D. Hunter 设计,...
5 分钟阅读
TextBlob 模块用于创建分析文本的程序。TextBlob 模块中包含的最强大功能之一是它的词性标注。首先,我们将安装 TextBlob 并运行这些命令:!pip3 install textblob from textblob import download_corpora 然后它将运行...
阅读 4 分钟
Python 等编程语言的强大之处在于它为用户提供了广泛的模块和库。这次我们将探索其中之一。每个人都可能在某个时候或另一个时候遇到过...
阅读 12 分钟
每次用户提交输入时,都必须对其进行验证,以查看它是否与我们预期的完全一致。我们可以通过两种方式验证输入:通过应用标志变量或实现 try 或 except。标志变量最初将是...
阅读 6 分钟
假设您已经使用 sched 模块或 datetime 模块工作过,大多数人会同意您最终需要对时间进行一些计划。假设您已经考虑了此类元素的扩展将如何持续存在,您可能也得出了一个结论,即可以编写...
5 分钟阅读
TensorFlow 是一个用于深度学习和机器学习的开源软件库。它最初由 Google Brain 团队创建,目前由 Google TensorFlow 团队负责维护。它用于许多不同的用途,包括时间序列预测、语音和图像识别以及......
阅读 4 分钟
很多时候,我们想通过程序从邮件中检索信息或数据,但又不想将邮件下载到我们的设备上。当我们只想获取信息并查找某些特定数据时,也会发生这种情况...
阅读 8 分钟
在本教程中,我们将讨论如何在 Python 中使用 matplotlib 调整创建的图形大小。Matplotlib 库广泛用于创建图表。简介 Matplotlib 因创建用于表示数据的图形而闻名。我们可以用所有不同类型的数据填充图形,包括...
阅读 3 分钟
在本教程中,我们将学习如何使用 Python 制作倒计时器。代码将使用用户输入的倒计时持续时间(以秒为单位)。之后,屏幕上将开始显示一个格式为“分钟:秒”的倒计时。时间……
阅读 2 分钟
Python 为 GUI 开发(图形用户界面)提供了多种选择。Tkinter 是所有 GUI 方法中使用最频繁的方法。它是 Python 提供的 Tk GUI 工具包的典型 Python 接口。构建 GUI 应用程序最快、最简单的方法是...
11 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India