leetcode毎日練習(ソート配列から重複項目を削除)


leetcode毎日練習(ソート配列から重複項目を削除)
今日から、私のleetcodeブラシの旅を始めて、このような訓練を通じて、自分のアルゴリズムのレベルを高めることができることを望んでいます.
初日
Question:(並べ替え配列から重複を削除)
        ,               ,           ,           。
           ,                 O(1)           。

Example:
     nums = [1,1,2], 

           2,       nums            1, 2。 

                   。    

1.考える
この问题を手に入れた时、私は考えて、あれ、この问题は难しくありませんて、すべての要素と后ろの要素が判断することにほかならなくて、もし等しいならば、この要素を削除して、そこで私はコードを书き始めて、私のコードは以下の通りです
class Solution:
def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    for i in range(len(nums)-1):
        if nums[i]==nums[i+1]:
            nums.remove(nums[i])

        return len(nums)

ええと、コードは確かに私の考えと同じですが、runというコードのとき、リストを超えるインデックスのエラーが発生しました.どこが問題なのか考えていました.
2.問題のまとめ
問題は、私がremoveの要素を持っている間にリストの長さが変化し、私たちのrangeで発生した遍歴数は以前に生成されたので、後で等しい判断を行うとインデックスを超えてしまいます.
では、問題の由来を知って、どのように問題を解決するかを知って、for文を使わないで、while文に変えます.
3.コード
変更後のコードは次のとおりです.
class Solution:
def removeDuplicates(self, nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    i=0
    while i

再度実行して、コードは正常に実行しました!