我正在O(N ^ 2)中得到解决方案 这是我的解决方案:
arr = [4,6,5,5,7,7,8]
count = 0
for i in range(n):
for j in range(n):
if (i!=j and arr[i]%arr[j]==0):
count = count + 1
return count
答案 0 :(得分:0)
您必须对照另一个项目检查每个项目,因此常规代码将为O(n ^ 2)。
了解问题的结构,也许可以使它更有效。
例如,如果您有重复的值,则可以先创建一个唯一列表:这可以具有复杂度O(n)。
也许还值得对列表进行排序,以便仅将较大的数字除以较小的数字,但排序的结果是O(n ^ 2)最差的是平均O(n log n)。
根据数字范围,您也许可以使用巧妙的数学属性来排除搜索的大部分内容(如果数据已排序)