[leetcode] Remove Duplicates from sorted array II

Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?

For example,
Given sorted array A = [1,1,1,2,2,3],

Your function should return length = 5, and A is now [1,1,2,2,3].

思路:相比第一道題思路變一下,用兩個指針來遍歷數組,同時記錄當前有幾個重複的元素

class Solution:
    # @param A a list of integers
    # @return an integer
    def removeDuplicates(self, A):
        if len(A) == 0 or len(A) == 1:
            return len(A)
        length = 1
        pt = 1
        n = len(A)
        c = A[0]
        count = 1
        while pt < n:
            if A[pt] == c:
                if count == 1:
                    A[length] = A[pt]
                elif count >= 2:
                    pt += 1
                    continue
                count += 1
            else:
                c = A[pt]
                count = 1
                A[length] = A[pt]
            pt += 1
            length += 1
        return length 
            
                


發佈了33 篇原創文章 · 獲贊 0 · 訪問量 7208
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章