40min
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if(len(nums)==1 or len(nums)==0):return len(nums)
i,cur=0,0
while(i<len(nums)-1):
if(nums[i]!=nums[i+1] or i==len(nums)-2):
nums[cur]=nums[i]
cur+=1
i+=1
if(nums[i]!=nums[i-1]):nums[cur]=nums[i]
else:cur-=1
return cur+1
1.由于要比较i与i+1,所以需要考虑边界情况,边界t与t-1相等与不等是两种不同情况,难点在于边界条件的考虑,还有只有一个数字的情况
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if(len(nums)==1 or len(nums)==0):return len(nums)
i,cur=0,0
while(i<len(nums)-1):
if(nums[i]!=nums[i+1]):
nums[cur]=nums[i]
cur+=1
i+=1
if(nums[i]!=nums[cur-1]):nums[cur]=nums[i]
return cur+1
不使用前后比较,而对cur和i比较,不需要考虑临界情况,简直太爽,4min
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if(len(nums)==0):return len(nums)
cur=0
for i in range(len(nums)):
if(nums[i]!=nums[cur]):
cur+=1
nums[cur]=nums[i]
return cur+1
网友评论