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

2021-09-24 23:56:20 字數 1230 閱讀 1629

nowcoder

在乙個長度為n的陣列裡的所有數字都在0到n-1的範圍內。 陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。 例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。

遍歷陣列,判斷當前元素numbers[i]是否和位置i相等:

如果numbers[i] == i,則numbers[i]位於它自己的位置,++i遍歷下乙個元素;

否則,找到位置是numbers[i]位置的元素numbers[numbers[i]]

c++**

class solution 

else}}

return false;}}

;

python**

# -*- coding:utf-8 -*-

class

solution

:# 這裡要特別注意~找到任意重複的乙個值並賦值到duplication[0]

# 函式返回true/false

defduplicate

(self, numbers, duplication)

:# write code here

iflen

(numbers)

<=0:

return

false

for i in

range

(len

(numbers)):

while i != numbers[i]

: m = numbers[i]

if m == numbers[m]

: duplication[0]

= m return

true

else

: a = m

numbers[i]

= numbers[m]

numbers[m]

= a

return

false

劍指offer 面試題3

思路 從左下角或者右上角開始比較 簡單版本 查詢方式從右上角開始查詢 如果當前元素大於target,左移一位繼續查詢 如果當前元素小於target,下移一位繼續查詢 進行了簡單的修改,可以判定輸入型別為字元的情況 查詢方式從左下角開始查詢 如果當前元素大於target,上移一位繼續查詢 如果當前元素...

劍指offer面試題3

前言 從最近的比賽中,真的可以看出來自己做題目太少了,一些常見的演算法,思路都不怎麼會,接下來要好好努力了 分析 書中給的分析思路很好,要解決乙個複雜的問題,最有效的方法就是從乙個具體的問題入手,這道題就可以舉例子,查詢7這個元素,首先從右上角開始,9比7大,所以9所在的列不會有,查詢8,比7大,所...

《劍指offer》陣列相關面試題

在乙個長度為n的陣列裡所有數字都在0 n 1範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複,也不知道重複了幾次,請找出陣列中任意乙個重複的數字。例如,長度為7的陣列,那麼對應的輸出應該是重複的數字2或者3.思路 重排這個陣列,從頭到尾依次掃瞄這個陣列中的每個數字。掃到下標為i的數字m時 首先...