03 找出陣列中重複的數字 python

2021-10-04 23:45:34 字數 867 閱讀 4341

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

# 1、使用字典

def duplicate(nums):

dic = {}

res =

for num in nums:

if num in dic:

dic[num] += 1

else:

dic[num] = 1

for k ,v in dic.items():

if v>1:

return res

# 2、在列表上操作

def duplicate2(nums):

for i in range(len(nums)):

while nums[i] != i:

if nums[i] == nums[nums[i]]:

return nums[i]

tem = nums[nums[i]]

nums[nums[i]] = nums[i]

nums[i] = tem

# print(nums)

return false

方法1:使用字典遍歷一遍數字,統計各值出現的次數。然後輸出頻次大於1的鍵值。時間複雜度o(n),空間複雜度o(n)

方法2:因為數字裡數字範圍0~n-1,遍歷陣列,如果所在元素和索引相同,說明該元素在正確的位置;如果不相同,則與索引為該元素值的元素交換。如果原素與索引為元素值的元素相同,說明該值重複,則返回該值。時間複雜度o(n),空間複雜度o(1)

找出陣列中重複的數字

面試題3 一 找出陣列中重複的數字 題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。static bool get duplicate num1 std vecto...

找出陣列中重複的數字

給定乙個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。注意 如果某些數字不在 0 n 1 的範圍內,或陣列中不包含重複數字,則返回 1 給定 nums 2,3...

找出陣列中重複的數字

在乙個長度為n的陣列中,所有的數字都在0 n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個陣列重複了幾次。請找出陣列中任意乙個重複的數字。例 輸入長度為7的陣列,對應的輸出的重複的數字是2或3。方法1 先排序在查詢 方法2 利用雜湊表 從頭到尾掃瞄每個數字,每掃瞄乙個數...