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

问题:
给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度
不要另外定义一个数组,您必须通过用 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


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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 该文章总结自牛课网的在线算法课程(https://www.nowcoder.com/) 经典排序算法就是前面讲那几...
    锅与盆阅读 7,767评论 6 14
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,118评论 0 0
  • 第一步 准备webpack项目(以Vue项目为例) 1、准备本地开发环境 安装node.js(官网) 安装npm(...
    zshanjun阅读 1,129评论 0 0
  • 我和妹妹的同学们上楼玩,不一会儿放烟花了,妹妹又打起精神,开心的看着烟花漫天开放,
    橙色小蘑菇阅读 155评论 0 8
  • 蓝天似浩渺 冽风弄平川 银雪铺山岗 晧狐赏晴光 不道百载松 聊斋千年传 仙魔道法高 人间真情盼 修行三六九 正道是...
    南飞雨燕阅读 527评论 30 57