算法:從數組中刪除重復整數的有效方法我在接受微軟的采訪時遇到了這個問題。給定一個隨機整數數組,用C編寫一個算法,刪除重復的數字并返回原始數組中的唯一數字。例如輸入:{4, 8, 4, 1, 1, 2, 9}產出:{4, 8, 1, 2, 9, ?, ?}一個警告是,預期的算法不應該要求首先對數組進行排序。當元素被移除時,以下元素也必須向前移動。無論如何,元素向前移動的數組尾部的元素值可以忽略不計。最新情況:必須在原始數組中返回結果,不應使用助手數據結構(例如哈希表)。不過,我想維持秩序是不必要的。UPDATE 2:對于那些想知道為什么會有這些不切實際的限制的人來說,這是一個面試問題,所有這些限制都是在思考過程中討論的,看看我怎樣才能想出不同的想法。
3 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
void rmdup(int *array, int length){ int *current , *end = array + length - 1; for ( current = array + 1; array < end; array++, current = array + 1 ) { while ( current <= end ) { if ( *current == *array ) { *current = *end--; } else { current++; } } }}

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
添加回答
舉報
0/150
提交
取消