小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

BAT面試算法進階(8)- 刪除排序數(shù)組中的重復(fù)項

 長沙7喜 2018-08-25

小編溫馨提示,今天是我們堅持學習算法的第8天!  


一.題目

    給定一個排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個元素只出現(xiàn)一次,返回移除后數(shù)組的新長度。
    不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。

  • 示例 1 給定數(shù)組 nums = [1,1,2],
    函數(shù)應(yīng)該返回新的長度 2, 并且原數(shù)組 nums 的前兩個元素被修改為 1, 2。 你不需要考慮數(shù)組中超出新長度后面的元素。

  • 示例 2 給定 nums = [0,0,1,1,1,2,2,3,3,4],函數(shù)應(yīng)該返回新的長度 5, 并且原數(shù)組 nums 的前五個元素被修改為 0, 1, 2, 3, 4。你不需要考慮數(shù)組中超出新長度后面的元素。

說明
為什么返回數(shù)值是整數(shù)?但是輸出的結(jié)果卻是數(shù)組?
請注意,輸入數(shù)組是以“引用”方式傳遞的,這意味著在函數(shù)里修改輸入數(shù)組對于調(diào)用者是可見的。你可以想象內(nèi)部操作如下:


二.解決方案

  • 算法

         數(shù)組完成排序后,我們可以放置2個指針i和j,其中i是慢指針,而j是快指針.只要nums[i] = nums[j],我們就增加j,跳過此重復(fù)項.

          當我們遇到nums[j] != nums[i]時,跳過重復(fù)項的運行已經(jīng)結(jié)束,因此我們必須把它nums[j]的值復(fù)制到nums[i+1],然后遞增i,繼續(xù)重復(fù)相同的過程,直到j(luò)到底數(shù)組末尾.

三.代碼實現(xiàn)

Java Code


四.復(fù)雜度分析

  • 時間復(fù)雜度: O(n),假設(shè)數(shù)組的長度是n,那么i和j分別最多遍歷n步

  • 空間復(fù)雜度: O(1)

修煉自己,比到處迎合別人重要的多! 


'一起打卡學習吧!'

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多