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

2021-10-02 22:14:04 字數 738 閱讀 4123

/*題目:找出陣列中重複的數字

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

例如:,那麼對應的輸出的是2或者3

*//*我們注意到陣列中的數字都是0~n-1r範圍內的,如果這個陣列中沒有重複的數字,那麼當陣列排序後數字i必然在下標為i的位置,但是由於陣列中可能有重複的數字,可能會導致混亂,我們可以重排這個陣列,從頭到尾掃瞄這個陣列,當掃瞄到下標為i的數字時候,首先比較這個數字(m)是不是i,如果是則掃瞄下乙個元素,如果不是,則拿它和第m個數字比較,如果它和第m個數字相等,則找到了乙個重複的元素,如果不是,則交換第i個元素和第m個元素,這個交換就相當於排序的作用

*//*

測試用例:1.長度為n的陣列裡包含乙個或多個重複的數字

2.陣列中不包含重複的數字

3.無效的輸入(空指標或與題目不符)

*/#include

using

namespace std;

bool

duplicate

(int numbers,

int length,

int*duplication)

swap

(numbers[i]

,numbers[numbers[i]])

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