美文网首页
【初级】从排序数组中删除重复项

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

作者: hello_quokka | 来源:发表于2018-03-26 16:01 被阅读0次

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

相关文章

  • leetcode 初级算法 数组(C++)

    初级算法 数组 1.从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一...

  • 数组

    26 删除排序数组中的重复项 使用双指针的做法,删除排序数组中的重复项其实就是找出排序数组中的非重复项,两个指针,...

  • leecode刷题(1)-- 删除排序数组中的重复项

    leecode刷题(1)-- 删除排序数组中的重复项 删除排序数组中的重复项 给定一个排序数组,你需要在原地删除重...

  • LeetCode基础算法-数组

    LeetCode基础算法-数组 算法 LeetCode 数组相关 1. 从排序数组中删除重复项 描述:给定一个排序...

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

    问题:给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,...

  • 数组-请你 原地 删除重复出现的元素

    数组是我们用到最多的 删除排序数组中的重复项

  • 2018-07-08

    数组 问题1. 从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,...

  • 从排序数组中删除重复项

    从排序数组中删除重复项,给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的...

  • 2018年8月 leetcode刷题(初级算法数组)

    从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的...

  • leetcode 探索-初级算法 数组 从排序数组中删除重复项

    从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的...

网友评论

      本文标题:【初级】从排序数组中删除重复项

      本文链接:https://www.haomeiwen.com/subject/emjrcftx.html