删除有序数组中的重复项 IIPython解法
給你一個(gè)有序數(shù)組 nums ,請(qǐng)你 原地 刪除重復(fù)出現(xiàn)的元素,使每個(gè)元素 最多出現(xiàn)兩次 ,返回刪除后數(shù)組的新長(zhǎng)度。
不要使用額外的數(shù)組空間,你必須在 原地 修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii
?
例:
輸入:nums = [1,1,1,2,2,3]
輸出:5, nums = [1,1,2,2,3]
解釋:函數(shù)應(yīng)返回新長(zhǎng)度 length = 5, 并且原數(shù)組的前五個(gè)元素被修改為 1, 1, 2, 2, 3 。 不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
解析:
設(shè)置一個(gè)指針,指針負(fù)責(zé)填值,當(dāng)相同值超過(guò)兩個(gè)時(shí),直接跳過(guò),指針也不移動(dòng),遍歷繼續(xù)前進(jìn),新遍歷的值和指針的前兩個(gè)值進(jìn)行比較,看是否超過(guò)了兩個(gè),如果不同放入指針?biāo)傅奈恢?#xff0c;然后繼續(xù)前進(jìn),直至遍歷完返回指針的值即可。
class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""flag = 0 # 指針for k in nums: # 遍歷if flag < 2 or k != nums[flag-2]: # 判斷nums[flag] = kflag += 1 # 指針后移return flag總結(jié)
以上是生活随笔為你收集整理的删除有序数组中的重复项 IIPython解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 矩阵置零Python解法
- 下一篇: 当前工作目录Python