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

偶然的你
TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
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貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
添加回答
舉報(bào)
0/150
提交
取消