python-3.x - 计算列表中重复项的算法

标签 python-3.x algorithm duplicates

下面的代码打印出在 A 中重复的数字。 根据我的理解,for 循环遍历列表中的每个元素并将其变成一个负数,但我不明白为什么它不将它打印的数字(位于位置 0、4、5)变成负数.

A = [1,2,3,1,3,6,6]
def printRepeating(arr, size): 

    print("The repeating elements are: ") 

    for i,x in enumerate(arr): 

        if arr[abs(arr[i])] >= 0: 

            arr[abs(arr[i])] = -arr[abs(arr[i])] 
            print(arr)
        else: 
            print (abs(arr[i]), end = " ") 
printRepeating(A,len(A))

最佳答案

算法假定:

  1. 数组的所有元素都以正数开头,并且
  2. 数组的所有元素都小于数组的长度。

在您的示例中,由于数组的长度为 7,因此数组中的所有元素都必须介于 1 和 6 之间。

算法所做的是将 array[k] 更改为负值,以指示已看到 k。例如,由于 1 是第一个看到的数字,array[1] 被更改为负数。下一次看到 1 时,array[1] 已经是负数,所以 1 一定是重复的。

关于python-3.x - 计算列表中重复项的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58440914/

相关文章:

Python3 Flask - 缺少 1 个必需的位置参数 : 'self'

python - 如何在 Python 中将空格从一个字符串复制到另一个字符串?

algorithm - 2 = 西塔 (1 + 1/n)^n ;为什么 e 是常数 theta?

javascript - 使用 JavaScript 的罗马数字转换器

mysql - 删除重复用户mysql

Python套接字错误TypeError : a bytes-like object is required, not 'str' with send function

Python堆排序实现解释

字符串解压 : Reduce time and space complexity

java - 如何防止 Java 泛型强制重复代码?

mysql - transient Mysql::错误:高流量站点上的重复条目 - 有什么想法吗?