删除数组中的重复元素,并返回去重的数组之Python解法
题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
解法:采用双指针,遍历数组,发现两个值相等,移动指针,发现两个值不相等,互换位置保证指针走过的地方都是不重复的数
def handler(li): """双指针方法""" if not li or len(li) == 0: return 0 i = 0 res = [li[0]] for j in range(1, len(li)): if li[i] != li[j]: i += 1 li[i] = li[j] res.append(li[i]) return i+1,res def handler_01(li): """元素弹出法""" if not li or len(li) == 0: return 0 i = 0 j = 1 while j <= len(li) -1: if li[i] == li[j]: li.pop(j) else: i += 1 j += 1 return len(li) if __name__ == '__main__': print('删除重复后列表长度及列表内容', handler([1,2,3,3,4,5])) print('删除重复后列表长度', handler_01([1,2,3,3,4,5]))
结果展示:
时刻记着自己要成为什么样的人!