您的位置:首页 > 其它

LeetCode 026 Remove Duplicates from Sorted Array

2014-03-07 12:20 369 查看
题目

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,

Given input array A = 
[1,1,2]
,

Your function should return length = 
2
, and A is now 
[1,2]
.

有排序的数组,删除重复的元素,让每个元素都只出现一次。

需要原地处理。

思路

1 考虑两个指针。第一个指针用来遍历,第二个指针用来表示处理好的元素。

2 每次遍历碰到前面一样的,继续;碰到不一样的,存储到第二个指针的位子,然后第二个指针再往后移动一格。

3 这个方法能够使用,关键在于排序过了。这样就不会出现相隔一段距离一样的元素。

4 这类问题有很多变形,不要记住固定套路,而是根据实际情况,产生相应地逻辑代码。写出来后一定要检查各种情况。

代码

public class Solution {
public int removeDuplicates(int[] A) {
if(A.length==0){
return 0;
}
int newindex = 1;
int oldindex =1;
int element = A[0];

while(oldindex<A.length){
if(A[oldindex]!=element){
A[newindex]=A[oldindex];
element = A[oldindex];
newindex++;
}
oldindex++;
}
return newindex;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode