LeetCode-080-刪除有序數(shù)組中的重復(fù)項(xiàng) II

題目描述:給你一個(gè)有序數(shù)組 nums ,請(qǐng)你 原地 刪除重復(fù)出現(xiàn)的元素,使每個(gè)元素 最多出現(xiàn)兩次 ,返回刪除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須在 原地 修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成。
示例說(shuō)明請(qǐng)見(jiàn)LeetCode官網(wǎng)。
??
鏈接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法一:數(shù)組遍歷
首先,如果數(shù)組的長(zhǎng)度不大于2,則不可能出現(xiàn)元素出現(xiàn)超過(guò)兩次的情況,直接返回;
如果數(shù)組的長(zhǎng)度超過(guò)2,聲明一個(gè)List為twiceNums用來(lái)記錄出現(xiàn)過(guò)2次的數(shù)字,聲明一個(gè)Set為onceNums用來(lái)記錄出現(xiàn)過(guò)1次的數(shù)字,并且將數(shù)字的第一個(gè)數(shù)字放入onceNums中,result為數(shù)字的長(zhǎng)度,然后遍歷數(shù)組nums,從第2個(gè)元素開(kāi)始遍歷,遍歷過(guò)程如下:
如果twiceNums已經(jīng)存在當(dāng)前的數(shù),說(shuō)明已經(jīng)出現(xiàn)過(guò)2次,將當(dāng)前的數(shù)挪到result的位置,然后將result減一,然后進(jìn)行下一輪處理;
如果onceNums中存在當(dāng)前的數(shù),則將當(dāng)前的數(shù)添加到twiceNums中,繼續(xù)處理下一個(gè)數(shù);
如果onceNums中不存在當(dāng)前的數(shù),則將當(dāng)前的數(shù)添加到onceNums中,繼續(xù)處理下一個(gè)數(shù)。
最后返回result即為數(shù)組的新長(zhǎng)度。
【每日寄語(yǔ)】 一個(gè)人有了自尊心,他才可以明確地去“領(lǐng)導(dǎo)”自己向準(zhǔn)確的途徑邁進(jìn)。所以,人應(yīng)當(dāng)一直地保持自己的尊嚴(yán)。