【发布时间】:2021-05-23 10:07:43
【问题描述】:
给定一个大小为 N 的整数数组/列表(ARR)。其中 N 等于 [2M + 1]。 现在,在给定的数组/列表中,“M”个数字出现两次,一个数字只出现一次。 查找并返回数组/列表中唯一的数字。
注意:根据给定条件,唯一元素始终存在于数组/列表中。
我已经使用 WHILE 循环完成了这个问题,但是当我尝试使用 FOR 循环执行此操作时,它不起作用
而且,我已经看到了一些解决此类问题的代码,但由于我是一名学习者,并且只完成了一些基本的 Python,所以还不知道复杂性(O^N)。
请提前帮助和感谢
WHILE 循环代码:
def find_unique(li,n):
for i in range(n):
j = 0
while(j < n):
if i != j:
if li[i] == li[j]:
break
j = j + 1
if j == n:
return li[i]
n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li,n)
print(ele)
FOR 循环代码:
def find_unique(li,n):
for i in range(n):
for j in range(0,n):
if i == j:
continue
if(li[i] == li[j] and j ==n):
return li[i]
n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li,n)
print(ele)
【问题讨论】:
-
转换为 numpy.ndarray 或 pandas 数据框。他们都有一个功能。 numpy.org/doc/stable/reference/generated/numpy.unique.html 和 pandas.pydata.org/docs/reference/api/pandas.unique.html 。您可以查看文档中的一些示例。 Python 在 for 循环中很慢,因此,只要有可能,就转换为 numpy 数组并使用其中的函数,因为它们非常快。如果您想了解更多相关信息,则称为矢量化。
-
在for循环中,
j会到达n吗? -
j==n 究竟有什么用途?
-
@SinaMeftah 它与问题无关,因为作者想在代码中找到问题。
-
@DeepakGouda 是的,我知道 j 没有达到 n 。但是,如何纠正它。
标签: python python-3.x