c 面試題 判斷陣列是否存在重複元素

2021-06-22 04:23:54 字數 1007 閱讀 6737

problem:

given an array in length of n, in which theelements are integers distributed from 1 to n, please judge whether there isduplication quickly.

即乙個長度為

n的陣列,元素取值範圍為1到

n,要求快速判斷是否存在重複元素。

解決方法:

1, 最直觀的解法:兩兩比較陣列元素,但是複雜度為

o(n2)。

2, 優化版

1:先對陣列排序,然後比較相鄰的元素是否相等或判斷陣列元素值是否與其下表相等;該方法時間複雜度依賴於排序演算法一般為

o(nlgn)。

3, 優化版

2:利用

hash

,建立乙個大小為n的

hash

表,遍歷陣列,出現的元素在

hash

表中標記為

1,若某個元素已經為

1則有重複;為了減少空間可以把

hash

表替換為

bitmap

;該方法時間複雜度為

o(n)。

4, 優化版

3:如果

n個元素的範圍都是在1到

n,所以如果沒有重複元素,則每乙個位置恰好可以對應陣列中的乙個元素之,通過將當前元素

k交換到其本身應該在的位置

k,也就是

k=array[i],array[array[i

],並判斷是否存在

duplication

或者已經就緒。時間複雜度

o(n)

,空間複雜度

o(1)

;但是該方法需要修改原陣列。

下面給出方法

4的乙個簡單實現:

bool hasdup(int a, int n)

} return false;

}

(筆試題)如何判斷陣列中是否存在重複元素

假設陣列a有n個元素,元素的取值範圍為1 n,如何判定陣列是否存在重複元素?方法1 陣列排序,比較相鄰元素是否相等 時間複雜度 o nlogn 空間複雜度 o 1 方法2 使用bitmap 位圖 定義長度為n 8的char陣列,每個bit表示對應數字是否出現過。遍歷陣列,使用bitmap對數字是否出...

面試題 js怎麼判斷是否是陣列?

js怎麼判斷是否是陣列?方法一 isarray 陣列自帶的判斷方法 let a 1 2,3 array.isarray a true方法二 instanceof操作符 let a 1 2,3 a instanceof array true方法三 constructor.tostring 方法 let...

給定乙個整數陣列,判斷是否存在重複元素。

給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列 現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。示例 1 輸入 1,2,3,1 輸出 true 示例 2 輸入 1,2,3,4 輸出 false 示例 3 輸入 1,1,1,3,3,4,3,2,4,2 輸出 t...