C C 面試之演算法系列 去除陣列中的重複數字

2021-04-20 18:07:30 字數 1062 閱讀 2060

去除陣列中的重複數字

題目:有乙個陣列

t[100]

,存放了1~

99之間的數字,用效率較高的**把重複數字去掉。例如陣列變成。

××××××××××××××××××××××××××××××××××

申請標誌陣列

此題重複的數字可能不只乙個,上述求和的方法不行了。

因為是高效率,我們可以採用空間換時間的策略來解決。

設立訪問標誌數字,初始化為

0,訪問到

n時將標誌數字的第

n個元素置為

n

最後遍歷該陣列,若標誌陣列中對應值為非

0,則順序儲存該數字於原陣列中,最後返回去除重複數字後的有效數的個數

int removerep(int array, int n)

for(i=0;i取出有效數

return left;

}××××××××××××××××××××××××××××××××××

符號標誌法

上述方法的空間複雜度為

o(n)

,利用符號位作為標誌即可不申請

o(n)

標誌陣列

int signedremoverep(int array, int n)

else

}

for(i=0;i抽取演算法

return left;

}

××××××××××××××××××××××××××××××××××

void main(void)

//left = removerep(t, 100);

left = signedremoverep(t, 100);

for(i=0;i

}

c c 去除陣列中重複的元素

第一層迴圈 0 到 len 1,當i為0,第二層迴圈j為 i 1即1 到 len 1,依次判斷是否 num i 和 num j 相等,如果相等則進入第三次迴圈,k為 j 1 到 len 1,將重複點 j 後面的所有元素都往前移動 1,並將陣列長度 len 1,j 也 1 判斷向前移動的元素們的第一位...

C C 面試之演算法系列 列印 N N 螺旋矩陣

c c 面試之演算法系列 列印n n 螺旋矩陣 via和 emc都曾經筆過這個試題 輸入n,列印n n 矩陣比如 n 3 列印 123894 765n 4 列印 1234 1213145 1116156 10987 螺旋矩陣 include include define right0 define ...

js去除陣列的重複元素和去除陣列中相鄰的重複元素

去除陣列的重複元素 array.prototype.distinct function var o2 var o3 var o for var i 0 o i i else length 0 for o in o1 for o in o2 return o3 var obj var o1 obj,o...