去除陣列中的重複數字
題目:有乙個陣列
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...