アイデアの簡単な紹介:
配列の並べ替えを考慮して、2つのポインターstartとcurを設定します。
ここで、startは決定可能な最後の一意の番号を
指し、curは現在調査されている番号
を指し、最初の2つの要素を指し
ます。 2つの要素が等しくない場合、
curはstartを指し、curはcur + 1を
指します。指す要素が等しい場合は、curを配列Indexlistに記録し、
curを後方に移動して、変更せずに開始します。
最後に、indexlistを反転した後、反転後の最初の要素から対応する繰り返し数をポップして削除し、
最後に長さを出力します。
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
length = len(nums)
start = 0
cur = 1
suma = 1
indexlist = []
while cur < length:
if nums[start] != nums[cur]:
start = cur
cur += 1
suma += 1
elif nums[start] == nums[cur]:
indexlist.append(cur)
cur += 1
indexlist = indexlist[::-1]
for pos in indexlist:
nums.pop(pos)
return suma