亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

算法:從數組中刪除重復整數的有效方法

算法:從數組中刪除重復整數的有效方法

鳳凰求蠱 2019-07-12 16:55:24
算法:從數組中刪除重復整數的有效方法我在接受微軟的采訪時遇到了這個問題。給定一個隨機整數數組,用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++;
            }
        }
    }}

應該是O(n^2)或更少。


查看完整回答
反對 回復 2019-07-12
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

我女朋友提出的一個解決方案是合并排序的變化。唯一的修改是,在合并步驟中,只需忽略重復的值。這個解也是O(N Logn)。在這種方法中,排序/重復刪除結合在一起。不過,我不確定這是否有什么區別。


查看完整回答
反對 回復 2019-07-12
  • 3 回答
  • 0 關注
  • 844 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號