编写 Python 程序检查列表是否包含重复元素

2024 年 8 月 29 日 | 阅读 3 分钟

在本教程中,我们将学习如何验证列表是否包含重复元素。这是一个可以在编码面试中被问到的基本列表程序。我们将使用各种方法来解决这个问题。让我们看看问题陈述。

问题陈述

给定一个整数数组列表 list1,如果任何值至少出现两次,则返回 true,如果每个元素都不同,则返回 false。

示例 - 1

示例 - 2

让我们理解以下解决方案。

方法 - 1:使用 set() 函数

示例 -

输出

true

解释 -

在上面的代码中,我们在名为 Solution 的类中定义了 duplicate() 函数。duplicate() 函数接受列表作为唯一参数。首先,我们将给定的列表转换为集合。我们知道集合不包含或删除重复值。然后我们检查 new_valuelist1 的长度。如果 new_value 和 list1 的长度相等,则表示列表中没有重复元素,因此返回 false,否则返回 true。

方法 - 2:排序后检查重复元素

在此方法中,首先,我们将对给定的列表进行排序(这将花费 0(N(LogN)) 的时间),然后我们将使用 for 循环来检查两个连续的元素,以找出它们是否重复。使用此方法,时间复杂度将提高到 0(N(LogN)),并且我们仍然使用 0(1) 的常数空间。

让我们看看下面的代码实现 -

示例 - 2

输出

true

解释 -

在上面的代码中,我们使用内置的 sort() 方法对给定的列表进行了排序,该方法会将重复的值彼此靠近排列(如果存在)。然后我们运行第一个 for 循环来存储索引值,第二个循环来比较相应的值。在第一次迭代中,i 的值为 1,内循环将执行 (0, 1) 次。list[i] 的值为 1,list[i-1] 的值为 1。因此存在重复元素,因此我们返回“true”。

方法 - 3:使用暴力法

在此方法中,我们简单地使用两个 for 循环并将值相互匹配。如果找到重复元素则返回 true,否则返回 false。这是一种暴力法,因此时间复杂度为 O(n2),但空间复杂度为常数。

让我们理解以下代码实现 -

示例 -

输出

true

解释 -

我们在上面的代码中访问了每个值,并对它们进行了比较,如果值匹配则返回 true。

结论

我们已经涵盖了解决给定问题的三种方法。您也可以尝试使用其他方法解决它,或者使用多个测试用例来测试代码。