在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
使用set去重並保持原陣列中元素相對位置不變,將去重後的列表擴容到原陣列一般大,然後再進行逐個元素的比較。若不相同記錄索引位置,在原始列表中找到該索引下的元素,就是第乙個重複的元素。
# -*- coding:utf-8 -*-
class
solution
:# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]
# 函式返回true/false
defduplicate
(self, numbers, duplication)
:# write code here
out =
sorted
(list
(set
(numbers)
), key=numbers.index)
# 去重並保持元素相對位置不變
out = out +[-
1]*(
len(numbers)
-len
(out)
)# 擴容新陣列,否則會報錯
for i in
range
(len
(out)):
if out[i]
!= numbers[i]
: duplication[0]
= numbers[i]
# 複製
return
true
# 返回函式的bool值
return
false
50 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。1.暴力解法 class solution if flag fals...
JZ50 陣列中重複的數字
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。題解 找出其中第乙個重複的數字,可以利用 set,set中...
50 劍指offer 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。boolean只佔一位,所以還是比較省的 public boolea...