在乙個長度為 n 的陣列裡的所有數字都在 0 到 n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為 7 的陣列 ,那麼對應的輸出是第乙個重複的數字 2。
依次掃瞄陣列中每個數字,當掃瞄到下標為 i 的數字(用 m 表示)時,比較 m 是不是等於 i 。如果是,則接著掃瞄下乙個數字;如果不是,則和第 m 個數字進行比較,如果相等就找到了。不相等就把第 i 個數字和 m 交換。
重複上面的過程。
# -*- coding:utf-8 -*-
class
solution
:# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]
# 函式返回true/false
defduplicate
(self, numbers, duplication)
:# write code here
size =
len(numbers)
ifnot size:
return
false
for i in
range
(size)
:if numbers[i]
<
0or numbers[i]
> size -1:
return
false
for i in
range
(size)
:while numbers[i]
!= i:
if numbers[i]
== numbers[numbers[i]]:
duplication[0]
= numbers[i]
return
true
m = numbers[i]
numbers[i]
= numbers[m]
numbers[m]
= m return
false
劍指offer 陣列中重複的數字
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。class solution 考慮這種非法輸入 for i...
劍指offer 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。分析 雖然也ac了,但是沒仔細看題,可以利用題目已有條件做到更簡單的...
劍指offer 陣列中重複的數字
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。解析 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍...