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時 首先...