[leetcode]Remove Duplicates from Sorted Array II @ Python


原題地址:https://oj.leetcode.com/problems/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].

解題思路:一種巧妙的解法。使用兩個指針prev和curr,判斷A[curr]是否和A[prev]、A[prev-1]相等,如果相等curr指針繼續向后遍歷,直到不相等時,將curr指針指向的值賦值給A[prev+1],這樣多余的數就都被交換到后面去了。最后prev+1值就是數組的長度。

代碼:

class Solution:
    # @param A a list of integers
    # @return an integer
    # @it's a good solution!
    def removeDuplicates(self, A):
        if len(A) <= 2: return len(A)
        prev = 1; curr = 2
        while curr < len(A):
            if A[curr] == A[prev] and  A[curr] == A[prev - 1]:
                curr += 1
            else:
                prev += 1
                A[prev] = A[curr]
                curr += 1
        return prev + 1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM