解题思路:
要把不重复的元素个数返回,因为以按升序排列,那就用两个指针,一一比较,
1、先判断nums是否有元素,没有就是长度为0
2、定义两个数 i = 0 , j = 1 ,如果 j <nums的长度,判断nums[ i ] 和 nums[ j ] 是否相等,若相等
就 j ++,直到一个数不相等了,由于nums 是升序,所以直接把 i 后面的那个重复的数赋值为 j 所指的数,这样循环,i 及前面的数都是不同的,最后若 j >nums的长度了,说明nums中不同的数都在nums 中前 i+1数中,返回数目 i+1即可
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
if nums is None :
return 0
n = len(nums)
i = 0
j = 1
while j < n:
if nums[j] != nums[i]:
i+=1
nums[i] = nums[j]
j += 1
return i+1