Python 程序将所有零移动到数组末尾2024 年 8 月 29 日 | 阅读 3 分钟 在本教程中,我们将编写 Python 程序将数组中的所有零移到末尾。问题陈述是给定一个包含一些随机数的数组,其中包含随机位置的零,但我们需要保持给定数组的顺序。例如 - 如果给定的数组是 [2, 7, 6, 0, 9, 0, 1, 0, 0, 8, 0],则应将其转换为 [2, 7, 6. 9, 1, 8, 0, 0, 0, 0, 0]。该数组保持了数组中各项的相对顺序。预期时间复杂度为 O(n),额外空间复杂度为 O(1)。 示例 - 有几种方法可以解决这个问题,我们将以令人兴奋的方式使用一些方法来解决这个问题。 解决方案实现在此方法中,我们从左到右遍历给定数组,并将元素放置在数组中下一个可用位置。一旦所有非零元素都被放置好,我们就用零填充所有剩余的索引。 让我们通过 Python 程序来实现这种方法。 示例 - 输出 [8, 7, 4, 2, 1, 0, 0, 0] 解释 - 在上面的代码中,我们定义了 move_zero() 函数,它接受一个列表作为参数。在函数内部,我们用零初始化了一个变量,该变量用于跟踪下一个可用索引位置。然后,我们遍历列表并检查当前元素是否为非零;如果是,则将其放在下一个位置并增加 k 的计数器。一旦所有非零元素都存储在列表中,我们就从 k 到给定列表的长度运行另一个 for 循环。在剩余的索引处,我们将零放在列表的末尾。 时间复杂度 - 时间复杂度为 0(n),其中 n 是输入的大小。 上述解决方案易于实现。让我们来理解另一种解决方案。 方法 - 2:使用 Quicksort 的分区逻辑我们也可以通过 Quicksort 分区部分的逻辑来解决这个问题。在此方法中,我们将 0 作为枢轴,并执行一次分区过程。分区逻辑读取所有元素,并将每个非枢轴元素与枢轴的第一个出现进行交换。 让我们理解下面的例子。 示例 - 输出 [6, 8, 2, 3, 4, 1, 0, 0, 0] 解释 - 在上面的代码中,我们创建了一个 swap 函数来交换元素。然后,我们创建了 partition() 方法,它调用 swap 方法,并且每次遇到非零数时,'j' 都会增加。该元素被放置在枢轴之前。 上述代码的时间复杂度为 0(n),其中 n 是输入的大小。 结论在本教程中,我们讨论了一些解决上述问题的方法。这是一个入门级的 Python 列表相关问题,这个问题可能会在技术面试中出现。 下一个主题Python 中的常规字典与有序字典 |
?在本教程中,我们将探讨如何使用各种 Python 函数来查找给定列表中元素的每个实例的索引。Python 通常可以轻松找到列表中元素的初始索引。查找对象的所有列表...
阅读 4 分钟
介绍 在本文中,我们将讨论。由于测试人员普遍认为移动自动化入门很难。我们坚信测试人员应该具备广泛的能力。您不需要成为这些方面的专家...
阅读 6 分钟
字典是 Python 中一种无序的数据值集合,用于存储数据值,如映射。字典存储键值对,而不是像其他数据类型那样存储单个值作为元素。字典中实现的键必须是唯一的……
阅读 4 分钟
Django 是一个流行的 Web 框架,它建立在 Python 编程语言之上。它为开发人员提供了强大的工具集,使他们能够快速构建健壮、可扩展和安全的 Web 应用程序。Django 的主要功能之一是它的...
阅读 3 分钟
什么是HTTP?HTTP是超文本传输协议的缩写,它有一些规则集,用于确定客户端-服务器架构中的通信或数据传输。客户端通常是浏览器,服务器是已经有信息并且客户端请求信息的来源...
阅读 3 分钟
legendre.legder 方法 Python Legendre 模块提供了几个函数,例如分类账,可用于对 Legendre 系列进行数学和微积分运算。它是 Legendre 类提供的功能之一。以下是分类账方法的列表...
阅读 3 分钟
与其他编程语言一样,Python 模运算符执行相同的工作来查找给定数字的模数。该运算符是一个数学符号,用于对给定两个数字执行不同的操作,例如(+、-、* /)加法、减法、乘法和除法...
14 分钟阅读
Python 提供了基本的 for 循环来打印图案。第一个外层循环管理行数,而内层嵌套循环管理列数。通过修改 print 语句,可以打印出新的数字图案、单词图案和星形图案。本文将展示一个...
阅读 4 分钟
基础/先决知识简介:'Pandas'是Python最杰出的库之一。它广泛应用于机器学习和数据分析的不同应用中。使用Pandas,程序员可以创建、读取和操作大量数据,并处理任何文件...
7 分钟阅读
类方法、静态方法和实例方法之间的区别 在本教程中,我们将学习类方法、静态方法和实例方法。这些方法是 Python 中面向对象编程的核心概念。每个 Python 爱好者都应该熟悉这些方法以及如何...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India