您的位置:首页 > 其它

删除排序数组中的重复数字

2016-05-13 15:38 218 查看
题目描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

样例:给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。

主要是看清题目,题目要求是三点:

1. 返回去重后数组的长度

2. 原数组要变,变成没有重复元素的,但是不用返回

3. 没有额外空间(也就是说不能新建一个数组,或者使用类似于set这样的结构来做题)

那就用一个temp值保存当前元素值,对比是否重复,重复了就删。好在数组是排好序的,不会出现重复元素不在一起的情况。

class Solution:
"""
@param A: a list of integers
@return an integer
"""
def removeDuplicates(self, A):
if len(A) == 0:
return 0
temp = A[0]
index = 1
while index != len(A):
if A[index] == temp:
A.pop(index)
else:
temp = A[index]
index += 1
return index + 1
# write your code here代码的逻辑非常简单,但是有一点特别需要注意,就是碰到这种需要删除元素的数组,进行遍历时,尽量用while循环,通过下标和变动数组长度的关系来控制循环结束的条件,尽量不要使用以下这种循环:
for i in A:
if i == temp:
A.remove(i)这种写法,极容易出错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组