[Leetcode]@python 80. Remove Duplicates from Sorted Array II

2241 ワード

タイトルリンク
https://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 nums = [1,1,1,2,2,3] ,
Your function should return length = 5 , with the first five elements of nums being 1 , 1 , 2 , 2 and 3 . It doesn't matter what you leave beyond the new length.
テーマの大意
順序付けされた配列を指定します.この配列を変更すると、各数が最大2回まで表示されます.余分な重複配列を除いた長さを返します.もちろん、余分な重複数を配列の後ろに置くのは影響しません.
問題を解く構想.
(参考)2つのポインタprevとcurrを用いて、A[curr]がA[prev]、A[prev-1]と等しいかどうかを判断し、等しいcurrポインタが等しくないまで後方に遍歴し続けると、currポインタが指す値をA[prev+1]に割り当て、余分な数が後方に交換される.最後のprev+1値は配列の長さです
コード#コード#
class Solution(object):
    def removeDuplicates(self, nums):
        """
 :type nums: List[int]
 :rtype: int
 """
        if len(nums) <= 2:
            return len(nums)
        prev = 1
        curr = 2
        while curr < len(nums):
            if nums[curr] == nums[prev] and nums[curr] == nums[prev - 1]:
                curr += 1
            else:
                prev += 1
                nums[prev] = nums[curr]
                curr += 1
        return prev + 1