劍指offer 陣列中重複的數字

2021-10-05 13:24:33 字數 1043 閱讀 6197

在乙個長度為 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的範圍...