1 陣列中重複的數字(python)

2021-10-05 15:50:24 字數 1435 閱讀 6391

題目描述:

找出陣列中重複的數字。

乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。

陣列中某些數字是重複的,但不知道有幾個數字重複了,

也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

示例:

輸入:[2, 3, 1, 0, 2, 5, 3]

輸出:2 或 3

方法1:

將陣列變為有序,依次掃瞄有序陣列,若出現重複數字,則返回該值

def

find1

(nums)

: nums.sort(

)for i in

range

(len

(nums)-1

):if nums[i]

== nums[i+1]

:return nums[i]

複雜度分析:python中的sort()是基於快排實現的,所以時間複雜度為o(nlogn),空間複雜度為o(1)。

方法2:

利用字典,統計每個數字出現的次數,返回出現次數大於1的數字

def

find2

(nums)

:#dict.fromkeys設定任意的value

numdict =

dict

.fromkeys(nums,0)

for i in nums:

if i in numdict:

numdict[i]+=1

if numdict[i]

>1:

return i

複雜度分析:時間複雜度為o(n),空間複雜度為o(n)。

方法3:

重排陣列。從左到右依次掃瞄陣列,判斷第i個數字nums[i]是否和i相等。若相等,則掃瞄下乙個;若不等,則將第i個數字和第nums[i]個數字進行比較,相等的話則返回該值,不等的話將兩者交換。重複該過程,直到找到重複的數字。

def

find3

(nums)

:for i in

range

(len

(nums)):

while i != nums[i]

:if nums[i]

== nums[nums[i]]:

return nums[i]

else

: temp = nums[i]

nums[i]

= nums[temp]

nums[temp]

= temp

複雜度分析:時間複雜度為o(n),空間複雜度為o(1)。

陣列中重複的數字(1)

題目 找出陣列中的重複數字 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有哪幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者是3。第一種方法 暴力解決 對於每乙個數字...

1 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。從頭到尾依次遍歷陣列,比較下標為i的數字 用m表示 是否等於i。如果...

1 陣列中重複的數字

在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中第乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。返回描述 如果陣列中有重複的數字,函式返回true,否則返回false...