思路一:题干中说是排序数组,即只需要向前或者向后比较,如果相同,则删除一个元素。如果使用向后比较就无须特殊处理了(为了处理末端问题,给末尾加了一个标记位)
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums)<2:return len(nums)
nums.append(’#’)
i=1
while nums[i]!=’#’:
if nums[i]==nums[i-1]:
nums.remove(nums[i])
i=i-1
i=i+1
return len(nums)-1
运行超长,纯属娱乐
思路二:类似双指针,一个指针指向不重复的元素,另一个指向可以放的位置(也许和别人的双指针不太一样?纯原创)
代码如下:
`class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if len(nums)<2:return len(nums)
sign=0
j=0
for i in range(1,len(nums)):
if nums[j]==nums[i]:
sign=sign+1
continue
else:
nums[j+1]=nums[i]
j=j+1
return len(nums)-sign`