题目描述
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].
解题思路
题目要求去除排序数组中多余的元素,改变数组并返回新数组的个数。也就是说原数组为A = [1,1,2],处理后的结果应该为A = [1,2,*],即将不同的元素2放在了1后面,且返回数组的长度为2.
该方法可以通过使用两个数组序号index或者指针实现。第一个index指向最后一个有效元素,第二个index向后遍历,若当前遍历元素与index元素不同,则将index后移一位,并将第二个index指向的元素付给第一个index的元素。最后返回index的位置即可。用时39 ms,比较慢~不知道大家有没有更好的想法,欢迎留言~~~~
class Solution {
public:
int removeDuplicates(int A[], int n) {
int count = 0;
for(int i = 1; i < n; i++)
{
if (A[i] == A[i-1]) count++;
else A[i-count] = A[i];
}
return n-count;
}
};
时间: 2024-10-11 04:42:19