Sword Offer 陣列中重複的數字 3

2022-03-31 07:13:15 字數 1832 閱讀 9849

在乙個長度為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 ...