| 
 小編溫馨提示,今天是我們堅持學習算法的第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ù)雜度分析
 修煉自己,比到處迎合別人重要的多!  
 '一起打卡學習吧!' |