肝了两个小时(感觉头发在燃烧)
只能查答案了
重点要注意几个点
0.要在原列表上修改,set不用想了
1.返回值是len(nums),列表的大小
2.remove del用法不同,pop不用想了
3.居然真的会出现空列表和极端情况。。。然后果断扑街了
4.嗯,取数判断没有领悟特别深,建议是使用pycharm(idea编译器系列)去做单步骤调试。。。不每一步运行,是查不出bug在哪的。
歇一会,成绩不高,等第二遍领悟的时候进行优化,下阶段试试链表
def removeDuplicates(nums):
"""
:type nums: List[int]
:rtype: int
"""
# 思考3+的方案
# 方案1:使用set函数去重(需要在原数组存储的内存上操作,测试失败)
# return list(set(nums))
# 方案2:使用for循环,匹配后一个数字是否相同
# remove -》删除索引
# del -》 删除后重新排序
# TODO 发现只能解决重复一次的情况
# range和原list不匹配
# 三个以上的重复值只去重为两项
# nums.remove(nums[i])del( nums[i] )
# for i in range(1,len(nums)):
# if nums[i] == pre:
# nums.remove(nums[i])
# i -= 1
# else:
# pre = nums[i]
# return nums
if not nums:
return 0
if len(nums) == 1: # 单独判断列表长度为1的情况,因为之后的for循环从下标1开始
return 1
nums.sort()
pre = nums[0]
i = 1
while i != len(nums) :
if nums[i] == pre:
nums.remove(nums[i])
else:
pre = nums[i]
i += 1
return len(nums)
nums = [1,1]
a = removeDuplicates(nums)
print(nums)