劍指offer 陣列中重複的數字

2021-10-04 08:59:18 字數 1330 閱讀 5085

題目描述

在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

方法一:空間換時間

一開始temp的初始化錯了,導致溢位…

初始化參考:python中語言初始化列表內容和長度

# -*- coding:utf-8 -*-

class solution:

# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]

# 函式返回true/false

def duplicate(self, numbers, duplication):

# write code here

length=len(numbers)

temp=[0]*length

for num in numbers:

if num<0 or num>=len(numbers):

return false

if temp[num]==0:

temp[num]+=1

else:

duplication[0]=num

return true

return false

方法二:

參考大佬高階寫法:牛客網討論

# -*- coding:utf-8 -*-

class solution:

# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]

# 函式返回true/false

def duplicate(self, numbers, duplication):

# write code here

length=len(numbers)

for i in range(length):

if numbers[i]<0 or numbers[i]>=len(numbers):

return false

while numbers[i]!=i:

temp=numbers[i]

if temp==numbers[temp]:

duplication[0]=numbers[i]

return true

else:

numbers[i]=numbers[temp]

numbers[temp]=temp

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的範圍...