【初级】从排序数组中删除重复项

问题:
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度
不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。

思路:
这道题作为刷leetcode开题之作,写了好几个小时 ==,一直各种报错,原因是没好好读题,逻辑架构不清,之前一直返回修改后的数组,在自己编辑器里跑没问题,但是一提交答案就报错。这道题需要注意以下几点:

  • 已知是有序列表了,因此无需排序,若需要排序可用 .sort(列表名),只需要比较相邻元素是否相同。
  • 不能定义新的数组,百度得到的很多答案都是定义了新的数组,自己刚开始也忽略了这一点导致一直报错。
  • 最后返回的是列表的长度

综上使用循环遍历数组,比较相邻元素是否相同,定义一个指针用于定位当前元素。

nums = [1,1,2]
if len(nums) == 0:
  return 0
if len(nums) == 1:
   return 1

index = 0
for i in nums[1:]:
  if i != nums[index]:
    index += 1
    nums[index] = i
return index + 1

【初级】从排序数组中删除重复项_第1张图片

同时若题目无需结果是原来的顺序的话,可以使用python内置函数set()
nums = sorted(set(nums), key = nums.index)

你可能感兴趣的:(【初级】从排序数组中删除重复项)