題目一:找出陣列中重複的數字
長度為n的陣列裡所有數字都在0~n-1的範圍內。請找出陣列中任意乙個重複的數字。
比如,那麼對應輸出的重複的數字是2或者3
思路:
一次掃瞄陣列,判斷下標為i的數字是否等於i,如果是,接著掃瞄下乙個,如果不是,拿它跟第m個數字進行比較。如果它和m個數字相等,就找到了乙個重複的數字,如果不相等,就把第i個數字和第m個數字交換,把m放到屬於他的位置。重複以上過程,直到找到乙個重複的數字。
python**:
def
duplicate
(nums)
:if nums ==
none
orlen
(nums)
<=0:
return
false
for num in nums:
if num <
0or num >
len(nums)-1
:return
false
for i in
range
(len
(nums)):
while nums[i]
!= i:
if nums[i]
== nums[nums[i]]:
return
true
else
: tmp = nums[i]
nums[i]
= nums[tmp]
nums[tmp]
= tmp
return
false
a = duplicate([2
,1,0
,2,5
,3])
print
("a: "
, a)
題目二:不修改陣列找出重複的數字
在乙個長度為n+1的陣列裡的所有數字都在1~n的範圍內,所以陣列中至少有乙個數字是重複的。請找出陣列中任意乙個重複的數字。
思路:
我們把從1~n的數字從中間的數字m分為兩部分,前面一半為1-m,後面一半為m+1–n,如果1-m的數字的數目超過m,那麼這一半的區間裡一定包含重複的數字,否則,另一半m+1–n的區間裡一定包含重複的數字。繼續這個重複的過程,直到找到重複的數字。
python**:
python 陣列中重複的數字
題目描述 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。coding utf 8 class solution 這...
1 陣列中重複的數字(python)
題目描述 找出陣列中重複的數字。乙個長度為 n 的陣列 nums 裡的所有數字都在 0 n 1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。示例 輸入 2,3,1,0,2,5,3 輸出 2 或 3 方法1 將陣列變為有序,依...
陣列 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 python 實現 an highlighted block ...