劍指Offer 3 找出陣列中重複的數字

2021-09-02 20:38:36 字數 1387 閱讀 7289

給定乙個長度為 n 的整數陣列 nums,陣列中所有的數字都在 0∼n−1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。

注意:如果某些數字不在 0∼n−1 的範圍內,或陣列中不包含重複數字,則返回 -1;

樣例給定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。

返回 2 或 3。

解法一,用負數標註已經出現的數字,遇到重複的直接返回。

class

solution

(object):

defduplicateinarray

(self, nums)

:"""

:type nums: list[int]

:rtype int

"""for i in nums:

if i <

0or i >=

len(nums)

:return-1

for i in

range

(len

(nums)):

ind =

abs(nums[i]

)if nums[ind]

<0:

return ind

else

: nums[ind]

=- nums[ind]

return

-1

解法二,參考劍指offer本書

class

solution

(object):

defduplicateinarray

(self, nums)

:"""

:type nums: list[int]

:rtype int

"""for i in

range

(len

(nums)):

if nums[i]

<

0or nums[i]

>=

len(nums)

:return-1

for i in

range

(len

(nums)):

ind = nums[i]

if ind == i:

continue

if ind == nums[ind]

:return ind

else

: temp = nums[i]

nums[i]

= nums[ind]

nums[ind]

= temp

return

-1

劍指offer(3)找出陣列中重複的數字

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 兩種實現思路 1.借助二分法,二維陣列的每一行看作是乙個排序陣列,進行二分查詢 2.選用右上角或者左下角開始比較查詢 二分法 publ...

劍指offer (3)陣列中重複的數字

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

劍指offer 3 陣列中重複的數字

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。使用hashset去重 如果新增不成功說明出現了重複的元素 返回。public intfindrepeatnu...