刪除陣列中重複元素 雜湊表方法和set方法

2021-07-22 12:21:12 字數 1065 閱讀 5217

忘了是哪個的面試題,說刪除陣列中重複元素,給了一組數, [90, 91, 1, 2, 90, 5, 91], 輸出 [90, 91, 1, 2, 5],類似這種情況,我給出了兩種解決方案。

其實最簡單的應該是申請乙個等大的陣列,去迴圈遍歷,我沒有採用。我採用以下兩種方法。

按照每個數的個位劃分,個位一共有0~9十種情況,我將個位相同的放在同乙個鏈位址中,只需申請乙個每個成員為結構體,共有10個成員的陣列。這在資料較大時查詢前面相同元素能提高很大效率的。

**如下:

#include #include using namespace std;

const int n = 10;

typedef struct similar_factor

similar_factor() {}

} similar_factor;

int fill_in(similar_factor* factor, const int value, int index)

else

tmp->next = new_factor;

} return 0;

}int main()

; similar_factor* factor = new similar_factor[10];

assert(factor != null);

for(int i=0; i我們知道c++的set底層是一顆紅黑樹,之前有寫過紅黑樹的**,知道它的機制是插入元素如果碰見相同的元素,直接插入失敗,返回false,所以我們可以利用這個機制來做這道題。

**如下:

#include #include #include using namespace std;

int main()

; setsint;

size_t len = sizeof(array) / sizeof(int);

for(int i=0; i以上**均經過測試,結果如下:

刪除陣列重複元素

問題描述 已有一維陣列,儲存不超過100個整型資料,其中有些元素的值存在重複,從陣列中刪除所有重複的元素 每個元素只保留乙個 並輸出結果陣列。輸入說明 使用者可輸入多組資料,每組資料由兩行組成 第一行 陣列元素的個數n 第二行 n個陣列元素,由空格分隔 輸出說明 對於每組輸入,輸出最後的結果,整數之...

Perl 刪除陣列中重複元素

寫乙個小程式時候,需要去除乙個陣列中的重複元素,搜尋了一下,找到的 主要是兩種,一種是使用grep函式,一種是轉換為hash表,分別如下 使用grep函式 片段 my array a b c a d 1,2,5,1,5 my count my uniq times grep 2 array 使用轉換...

php刪除陣列中重複元素的方法

幾種php刪除陣列元素方法在很多情況下我們的陣列會出現重複情況,那我們刪除陣列中一些重複的內容怎麼辦,這些元素必須保持他唯一,所以就想辦法來刪除它們,下面利用了遍歷查詢llgfydop來刪除重複陣列元素的幾種方法。方法一 完整刪除重複陣列例項 刪除陣列中的乙個元素 function array re...