題目描述
在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。
示例1輸入
複製輸出
複製
# -*- coding:utf-8 -*-
class solution:
# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]
# 函式返回true/false
def duplicate(self, numbers, duplication):
if not numbers:
return false
res =
for i in numbers:
if i in res:
duplication[0] = i
return true
else:
return false
方法二:1.遍歷陣列,判斷當前位的值和這個值得下標是否相等,
2.如果相等,則遍歷下一位
3.若不等,則將這個位置i上的元素和位置a[i]上的元素相比較,如果相等,則成功(原因:相等表示這個數第二次出現,因為前面已經讓位置i的元素和位置a[i]上的元素交換,讓a[i]位置上的值和它的下標對應,但位置i上的值和它的下標不一定對應,再次出現這個數之後,讓再次出現的數和以這個數為下標的元素對比,如果相等,則找到重複的數字)若不等,則將它們兩交換。換完之後a[i]位置上的值和它的下標是對應的,但i位置上的元素和下標並不一定對應。重複3.的操作,直到當前位置i的值也為i,將i向後移一位。再重複1.
# -*- coding:utf-8 -*-
class solution:
# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]
# 函式返回true/false
def duplicate(self, numbers, duplication):
# write code here
for i in range(len(numbers)):
while numbers[i] != i:
temp = numbers[numbers[i]]
if temp == numbers[i]:
duplication[0] = numbers[i]
return true
else:
numbers[numbers[i]] = numbers[i]
numbers[i] = temp
return false
陣列 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 python 實現 an highlighted block ...
陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道哪幾個 數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如 如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。include iostream using namespace ...
陣列中重複的數字
題目 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。思路 用雜湊表解決的時間複雜度和空間複雜度為o n 因為陣列中...