LeetCode_26 刪除排序數(shù)組中的重復(fù)項(xiàng)(數(shù)組題)

題目地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

題目:
給定一個(gè)排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素世澜,使得每個(gè)元素只出現(xiàn)一次贺嫂,返回移除后數(shù)組的新長(zhǎng)度翔怎。

不要使用額外的數(shù)組空間女责,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成持灰。

示例 1:

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

試題分析:

這道題是一道典型的有序數(shù)組操作題荠锭,要抓住三個(gè)要點(diǎn),一個(gè)是有序數(shù)組晨川,另一個(gè)是原地刪除证九,還有一個(gè)是不考慮超出新長(zhǎng)度后面的元素。

有序數(shù)組意味著通過(guò)O(n)的時(shí)間復(fù)雜度共虑,只需要循環(huán)一次就能夠剔除重復(fù)數(shù)字愧怜,要利用好有序這個(gè)特點(diǎn),當(dāng)有連續(xù)相等的數(shù)字時(shí)要做跳過(guò)處理妈拌。

原地刪除不使用額外空間拥坛,這就要求充分利用會(huì)被刪除的重復(fù)數(shù)字的位置。

綜上考慮下來(lái)尘分,可以使用快慢雙指針?lè)桨竵?lái)解該題猜惋,慢指針指向數(shù)組當(dāng)前循環(huán)過(guò)程中最后一個(gè)不重復(fù)的數(shù)值,快指針指向當(dāng)前循環(huán)體正在處理的數(shù)值音诫。當(dāng)比較兩個(gè)指針的時(shí)候這就會(huì)有兩種情況發(fā)生惨奕,當(dāng)慢指針和快指針指向的值相等的時(shí)候說(shuō)明快指針指向了重復(fù)的值,這時(shí)候慢指針不移動(dòng)竭钝,只對(duì)快指針進(jìn)行向后移動(dòng)梨撞;當(dāng)快指針和慢指針指向的數(shù)值不等的時(shí)候,說(shuō)明這個(gè)數(shù)字是要加到新數(shù)組里的香罐,這時(shí)候?qū)⒙羔樅笠苿?dòng)一位卧波,用快指針指向的值賦給慢指針后移后指向的值,這時(shí)你可能會(huì)說(shuō)直接覆蓋慢指針后的值不就造成數(shù)據(jù)被覆蓋了庇茫?答案是不會(huì)港粱,自己思考下,慢指針后面的數(shù)據(jù)會(huì)有兩種情況旦签,一種是和慢指針指向的值相等的重復(fù)數(shù)字查坪,還有一種是和慢指針不相等的數(shù)字,如果慢指針是有連續(xù)重復(fù)值則用快指針指向的不相等的值進(jìn)行覆蓋重復(fù)值位置宁炫,如果慢指針和快指針之間沒(méi)有重復(fù)的可覆蓋空間慢快指針指向的是兩個(gè)不相等的數(shù)字偿曙,則在慢指針后移一位后,其實(shí)相當(dāng)于快指針將值賦值給了自己羔巢,這點(diǎn)非常巧妙望忆,需要自己好好體會(huì)罩阵。

public int removeDuplicates(int[] nums) {
        if(nums.length == 0){
            return 0;
        }

        //i代表慢指針
        int i = 0;
        //j代表快指針
        int j = 1;

        for(;j<nums.length;j++){
            if(nums[i] != nums[j]){
                //慢指針指向的數(shù)字和快指針不相等的話(huà)則慢指針向后移動(dòng)一位
                i++;
                //將快指針指向的值賦值給慢指針指向的值,
                // 1)如果數(shù)組內(nèi)的值是連續(xù)不相等启摄,則此時(shí)i=j快慢指針都指向同一個(gè)數(shù)值稿壁,相當(dāng)于原地賦值
                // 2)如果連續(xù)相等后的第一個(gè)不相等,則將i++后j指向的第一個(gè)不相等的值賦值給i指向的值
                nums[i] = nums[j];
            }
        }

        //i是下標(biāo)值需要加1才是length
        i++;
        return i;
    }

源碼路徑:com.monkey01.array.RemoveDuplicateFromSortedArray_26

配套測(cè)試代碼路徑:test目錄com.monkey01.array.RemoveDuplicateFromSortedArray_26Test

https://github.com/feiweiwei/LeetCode4Java.git

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歉备,一起剝皮案震驚了整個(gè)濱河市傅是,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌威创,老刑警劉巖落午,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異肚豺,居然都是意外死亡溃斋,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)吸申,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梗劫,“玉大人,你說(shuō)我怎么就攤上這事截碴∈崆龋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵日丹,是天一觀的道長(zhǎng)走哺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)哲虾,這世上最難降的妖魔是什么丙躏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮束凑,結(jié)果婚禮上晒旅,老公的妹妹穿的比我還像新娘。我一直安慰自己汪诉,他們只是感情好废恋,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著扒寄,像睡著了一般鱼鼓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上该编,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天迄本,我揣著相機(jī)與錄音,去河邊找鬼上渴。 笑死岸梨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稠氮。 我是一名探鬼主播曹阔,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隔披!你這毒婦竟也來(lái)了赃份?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤奢米,失蹤者是張志新(化名)和其女友劉穎抓韩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鬓长,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谒拴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涉波。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片英上。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啤覆,靈堂內(nèi)的尸體忽然破棺而出苍日,到底是詐尸還是另有隱情,我是刑警寧澤窗声,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布相恃,位于F島的核電站,受9級(jí)特大地震影響笨觅,放射性物質(zhì)發(fā)生泄漏拦耐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一屋摇、第九天 我趴在偏房一處隱蔽的房頂上張望揩魂。 院中可真熱鬧,春花似錦炮温、人聲如沸火脉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)倦挂。三九已至,卻和暖如春担巩,著一層夾襖步出監(jiān)牢的瞬間方援,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工涛癌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留犯戏,地道東北人送火。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像先匪,于是被迫代替她去往敵國(guó)和親种吸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類(lèi)型呀非。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一坚俗。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,430評(píng)論 3 44
  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書(shū)筆記岸裙,整理的知識(shí)點(diǎn)猖败,也是為了防止忘記,尊重勞動(dòng)成果降允,轉(zhuǎn)載注明出處哦恩闻!如果你也喜歡,那...
    波波波先森閱讀 4,086評(píng)論 0 23
  • 自保和一對(duì)一的開(kāi)始打開(kāi)自己去融入群體剧董,和更多的人去鏈接了判呕!慢慢得到了群體的滋養(yǎng),然后更加深入和敞開(kāi)了送滞!社交的開(kāi)始關(guān)...
    竺子閱讀 159評(píng)論 1 2
  • 明亮的黎明是一塊裹尸布裝著黑夜的尸體
    sH2nxy閱讀 335評(píng)論 0 3
  • 讀書(shū)日的筆記
    鍋?zhàn)哟笕?/span>閱讀 140評(píng)論 0 0