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

2018-03-26  本文已影响0人  hello_quokka

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

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

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

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

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

猜你喜欢

热点阅读