在乙個長度為n的陣列裡的所有數字都在0~n-1的範圍內.陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複率幾次.請找出陣列中任意乙個重複的數字.例如,如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2後者3
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# author lq6h
class
solution
:def
duplicate
(self,arr)
:"""
:param arr: list[int]
:return: int
"""ifnot arr:
return
n=len(arr)
res=
0for i in
range
(n):
if arr[i]
<
0or arr[i]
>n-1:
return
for i in
range
(n):
while arr[i]
!=i:
if arr[i]
==arr[arr[i]]:
res=arr[i]
return res
index=arr[i]
arr[i]
=arr[index]
arr[index]
=index
return
false
題目與上面類似,長度為n+1的陣列裡的所有數字都在1~n的範圍內,唯一要求陣列不能修改
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# author lq6h
class
solution
:def
getduplication
(self,arr)
:"""
:param arr: list[int]
:return: int
"""ifnot arr:
return-1
start=
1 end=
len(arr)-1
while end>=start:
middle=
((end-start)
>>1)
+start
count=self.countrange(arr,start,middle)
if end==start:
if count>1:
return start
else
:break
if count>
(middle-start+1)
: end=middle
else
: start=middle+
1return-1
defcountrange
(self,arr,start,end)
: count=
0for i in
range
(len
(arr)):
if arr[i]
>=start and arr[i]
<=end:
count+=
1return count
Sword Offer 二維陣列中的查詢 4
題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序.請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數12 8924 91247 101368 1115 usr bin env python3 coding utf 8 author...
陣列 陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。思路 python 實現 an highlighted block ...
陣列中重複的數字
在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道哪幾個 數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。例如 如果輸入長度為7的陣列,那麼對應的輸出是重複的數字2或者3。include iostream using namespace ...